在 Debian 上配置 Python 定时任务,常见有 3 种方式,从最推荐到进阶依次是:
crontab -e
如果是第一次用,会让你选编辑器(推荐 nano 或 vim)。
示例:每天 3 点执行
0 3 * * * /usr/bin/python3 /home/user/script.py >> /home/user/log.txt 2>&1
参数说明:
分 时 日 月 周 命令
0 3 * * * 每天3:00
常用时间写法:
*/5 * * * *0 * * * *0 4 * * 1which python3
crontab -l
✅ 脚本里用绝对路径(cron 没有环境变量)
✅ 日志一定要重定向,否则出错看不到
✅ 虚拟环境要写全:
0 3 * * * /home/user/venv/bin/python /home/user/script.py
适合服务级任务。
sudo nano /etc/systemd/system/mytask.service
[Unit]
Description=Python Task
[Service]
ExecStart=/usr/bin/python3 /home/user/script.py
sudo nano /etc/systemd/system/mytask.timer
[Unit]
Description=Run Python Task Daily
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
systemctl list-timers
如使用 schedule / APScheduler:
import schedule
import time
def job():
print("run")
schedule.every().day.at("03:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
⚠️ 需要常驻进程,服务器重启要自己管理。
| 场景 | 推荐 |
|---|---|
| 简单脚本 | cron |
| 服务/失败重试 | systemd timer |
| 短期测试 | Python 内部 |
如果你愿意,可以告诉我:
我可以直接帮你写一份可用配置。