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