通过crontab执行Python脚本

2 投票
4 回答
7409 浏览
提问于 2025-04-16 12:51

我的Python脚本为什么没有每分钟通过crontab运行呢?我的脚本有执行权限,并且还调用了另外两个Python脚本。


This is the content of my crontab (#crontab -l):
*/1 * * * * /usr/bin/rsm/samplesMonitor.py

谢谢大家。

4 个回答

0

应该用 */1 而不是 *\1(用正斜杠代替反斜杠)。另外,确保路径是正确的;通常在 /usr/bin 下面是没有子目录的。

1

我觉得应该是 */1,而不是 *\1

4

检查一下 /var/log/syslog 这个文件,看有没有错误信息。

DIAGNOSTICS
       cron requires that each entry in a crontab end in a 
       newline character. If the last entry in a crontab is 
       missing a newline (ie, terminated by  EOF),  cron  will 
       consider the crontab (at least partially) broken. A 
       warning will be written to syslog.

更新:根据你的日志信息,脚本正在运行,但返回了一个错误代码。如果你安装了邮件代理,Cron会把输出结果发邮件给你。

你可以尝试以下两种方法:

  1. 安装一个邮件代理,比如: apt-get install exim4
  2. 把你的cron命令改成记录到文件,像这样:

    * * * * * /usr/bin/rsm/samplesMonitor.py 2>&1 >> /tmp/script.log
    

更新 2:我重新看了一下你的问题,觉得你可能遇到了Python导入的问题。你说你的脚本调用了另外两个脚本。我建议你从 / 目录运行你的脚本。Python默认会在当前工作目录查找导入的模块,所以要确保你的脚本可以在任何路径下运行。

在crontab中,你可以通过在另一个shell进程中调用你的脚本来设置起始工作目录。例如:

bash -c "cd THE_WORKING_DIR;/usr/bin/rsm/samplesMonitor.py"

撰写回答