linux中定时执行python脚本

linux和wsl执行方法相同,windows也可以通过这种方法在linux中依照如下方法完成。

首先确认cron已经安装且在运行:

#service cron start

 * cron is running

如果显示:

 * cron is not running

则需要

service cron start

crontab -e 后添加如下命令,每分钟执行 

* * * * * /usr/bin/python3 /home/lighthouse/python/get_cpu_usage.py

先用如下脚本测试

import psutil
import datetime
import os

def get_cpu_usage():
    # 获取CPU的总使用率,interval参数设置为1,表示计算过去1秒内的平均CPU使用率
    usage = psutil.cpu_percent(interval=1)
    return usage

def write_to_file(cpu_usage):
    # 获取当前时间
    current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    # 写入到文件,如果文件不存在则创建
    current_file_path = os.path.abspath(__file__)
    current_directory = os.path.dirname(current_file_path)
    write_file_path = os.path.join(current_directory, "cpu_usage_log.txt")
    with open(write_file_path, 'a') as file:
        file.write(f"{current_time} - CPU Usage: {cpu_usage}%\n")

if __name__ == "__main__":
    # 获取CPU占用率
    cpu_usage = get_cpu_usage()
    # 写入到文件
    write_to_file(cpu_usage)

执行结果如下: 

2024-05-28 11:59:02 - CPU Usage: 2.6%
2024-05-28 12:00:02 - CPU Usage: 5.7%
2024-05-28 12:01:02 - CPU Usage: 2.6%
2024-05-28 13:59:56 - CPU Usage: 13.4%
2024-05-28 14:00:05 - CPU Usage: 6.4%
2024-05-28 14:01:01 - CPU Usage: 7.4%

上面标蓝是我中午吃饭电脑休眠的结果,任务直接停止了,这要是我电脑休眠了任务岂不是错过了,注意要将windows的休眠任务关掉才行,包括盖盖子休眠和长时间不操作休眠都要关。

也可以借助如下shell脚本一步构建:

#!/bin/bash

echo "环境变量=待填写" >> ~/.bashrc
source ~/.bashrc

pip install -r requirements.txt

# 获取当前脚本的绝对路径
SCRIPT_PATH="$(readlink -f "$0")"
# 获取脚本所在的目录
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"

# 检查python脚本是否存在
PY_SCRIPT="$SCRIPT_DIR/script.py"

echo $PY_SCRIPT

if [ -f "$PY_SCRIPT" ]; then
    # 获取当前crontab内容,并追加新作业
        echo "0 9 * * * /usr/bin/python3 $PY_SCRIPT" | crontab -
        echo "Cron job for $PY_SCRIPT has been set."
else
        echo "Error: $PY_SCRIPT does not exist."
        exit 1

fi

crontab -l

如果你有更复杂的软件依赖,环境设置等,建议通过ubuntu的基础镜像构建本地镜像并打包发布,这样给别人的时候可以一键运行。dockerfile如下

# 使用Ubuntu最新LTS版本作为基础镜像
FROM ubuntu:24.04


# 安装Python 3和必要的工具
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    cron \
    vim \
    && rm -rf /var/lib/apt/lists/*


# 设置Python 3为默认的Python版本
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
RUN update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

## 设置环境变量
ENV LANG C.UTF-8
ENV PYTHONUNBUFFERED=1


# 拷贝宿主机文件到镜像中
COPY *.py /app
COPY requirements.txt /app
WORKDIR /app


# 安装requirements.txt中指定的Python依赖
RUN python -m pip install  -r /app/requirements.txt --break-system-packages

# 设置每天12点的定时任务
RUN (crontab -l ; echo "0 12 * * * /usr/bin/python3 /app/your_script.py") | crontab

上述dockerfile可在目录下cmd中通过如下命令构建并运行:

docker build -t you_image_name .

docker run -it you_contaner_name you_image_name 

记得启动docker后要打开cron服务,不然不会定时执行还不报错:service cron start 。

 如果要发布,可以使用以下命令将构建的镜像保存为 tar 文件(假设镜像名称为 "my-python-app"):

docker save -o my-python-app.tar my-python-app 

接收者收到 tar 文件后,可以使用以下命令加载镜像: 

docker load -i my-python-app.tar

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值