如何查日志

1
sudo /var/log/syslog | grep cron

捕获输出

1
1 2 * * * /home/hyy/Start.py >/tmp/output.log 2>&1

确认 cron 在跑

1
ps -ef | grep cron | grep -v grep

路径要对

  • crontab 默认在 $HOME 下执行;若脚本里用 os.getcwd(),目录不对会报找不到模块。
  • 命令里尽量写绝对路径,或在任务前 source ~/.zshrc,保证环境变量可用。

最后一行要空行

  • 很多人踩坑:crontab 文件末尾需要空行,否则最后一条可能不执行。

Debian/Ubuntu 的权限与命名

/etc/cron.dcron.{hourly,daily,weekly,monthly} 下的文件需满足:

  • 属主为 root;
  • 仅 root 可写;
  • 组和其他用户不可写;
  • 文件名不要包含 .,除 -_ 外不要有特殊字符。

Python 脚本注意点

  • 可在脚本首行加 #!/usr/bin/python(非必须);
  • 一定要把输出重定向到日志,方便排查。

脚本权限

  • 尽量用普通用户 crontab,不要用 sudo crontab -e
  • 若日志被 root 删掉又 root 新建,权限会错;正确做法是 echo "" > logfile,保留原文件权限与属组。