方永、南天紫雲

道亦有道

linux中cron之PATH变量
2013年12月20日

給root帳號添加了一條記錄,看 /var/log/cron 是執行了的,但是沒有結果。其它各條記錄都正常。

這條記錄執行一個腳本,這個腳本的Shebang是 #!/bin/env lua ,測試之後的內容並沒有執行,換爲 #!/bin/shecho $PATH ,只有 /usr/bin:/bin ,搜索一番,並 man crontab ,結果是 PATH 這個變量傳遞的問題。

首先,在 /etc/crontab 裏面修改 PATH 並不會生效。因爲 /etc/crontab 是系統級的,並且和 /var/spool/cron/ 裏面各個用戶的配置文件沒有繼承關係。

其次, /etc/cron.d/ 裏面也不會生效,這裏的文件是其他程序自定義的。

於是, crontab -e 添加 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin ,問題解決。