用于关闭系统的 Python 脚本在 cron 中不起作用

用于关闭系统的 Python 脚本在 cron 中不起作用

用于关闭系统的 python 脚本在终端上工作正常,但在包含在 crontab 中时不起作用。该脚本由 cron 调用但以错误结束'未找到关机命令'或者 '未找到 init 0 命令'。我使用的是 fedora 17,脚本是从 root 的 crontab 执行的。

#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')

答案1

您的 PATH 不是您期望的那样。根据(Debian 版本的)crontab(5) 手册页,PATH 环境变量设置/usr/bin:/bin为 以便从 cron 运行程序。您可以通过PATH=在 crontab 顶部添加一行来更改此设置,例如:

PATH=/usr/sbin:/sbin:/usr/bin:/bin

这将更改 PATH= 行下方的所有 crontab 条目的路径,直到下一个 PATH= 行。请参阅定时任务(5)手册页了解更多详细信息。

答案2

我猜你的代码片段的第一行应该是这样的:

#!/usr/local/bin/python

或者,如果您还确保PATH在 crontab 中设置了适当的值:

#!/bin/env python

你的 crontab 条目是什么样的?不要忘记cron设置一个非常有限的环境,因此您需要提供脚本文件的完整路径,以便cron可以找到它。

shutdown另外,python在从 调用时可能找不到cron,因为它会继承cron有限的环境。尝试在调用shutdown中提供命令的完整路径os.system()

相关内容