使用 cron 运行 Python 脚本失败

使用 cron 运行 Python 脚本失败

我使用的是 FreeBSD 变体,如下所示:

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power: uname -a
FreeBSD ROUTER.local 10.1-RELEASE-p15 FreeBSD 10.1-RELEASE-p15 #0 c5ab052(releng/10.1)-dirty: Sat Jul 25 20:20:58 CDT 2015     root@pfs22-amd64-builder:/usr/obj.amd64/usr/pfSensesrc/src/sys/pfSense_SMP.10  amd64
[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:

我编写了一个 python 脚本,可以在 CLI 中使用以下命令成功运行:

 /usr/local/bin/python2.7 /home/Script_to_monitor_power/power_alarm_t2.py

python 脚本包含一个 shebang 行,如下所示:

#!/usr/bin/env python2.7

python2.7的位置如下:

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power: where python2.7
/usr/local/bin/python2.7
[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:

我的目标是将上面的脚本作为 cronjob 运行。所以我使用以下命令使我的脚本可执行

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power: chmod +x power_alarm_t2.py

我已经编辑了 crontab 如下:

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power: crontab -l
* * * * * /usr/local/bin/python2.7 /home/Script_to_monitor_power/power_alarm_t2.py
[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:

我也这样做:

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power: cron reload
cron: cron already running, pid: 43420
[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:

现在当我这样做时:

[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:   ps -ef | grep cron
[2.2.4-RELEASE][[email protected]]/home/Script_to_monitor_power:

问:我的 cronjob 没有每 1 分钟运行一次。请建议我缺少什么?

答案1

你的 cron 中的行应该是:

* * * * * /home/Script_to_monitor_power/power_alarm_t2.py

如果您从非标准位置运行 python,也许明智的做法是将此 python 脚本包装在 shell 脚本中并添加 PATH 和 LD_LIBRARY_PATH。

您还可以尝试制作 shell 脚本并将此脚本添加到 cron 中,以明确指向 python 可执行文件来执行 python 并添加您的主环境变量:

#!/bin/bash
source ~/.bash_profile
/path/to/python /home/Script_to_monitor_power/power_alarm_t2.py

相关内容