
用於關閉系統的 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()
。