Linux
crontab 只執行一些命令?
我有一個 Raspberry Pi 2,用作資訊亭,為此我安裝了基於 Raspbian 的 FullPageOS 發行版。
一切正常,除了一些命令在嘗試從 crontab 執行時靜默失敗。
我有 2 個命令用於 pi 使用者在特定時間打開和關閉資訊亭:
$crontab -l -u pi # m h dom mon dow command 05 9 mon-fri * * /bin/bash /home/pi/scripts/dispon.sh >> /tmp/cronjob.log 2>&1 15 18 mon-fri * * /usr/bin/xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1 */3 * * * * /usr/bin/touch /tmp/1111 >> /tmp/cronjob.log 2>&1
如您所見,我嘗試了不同的方法:在監視器關閉序列中直接執行 xset,並在執行監視器時作為腳本的一部分。
dispon.sh 腳本的內容(chmod a+x):
#!/bin/bash xset -display :0 dpms force on xset -display :0 -dpms
這兩個命令似乎都不起作用(顯示無法打開/關閉),也沒有在 /tmp/cronjob.log 中留下任何錯誤消息
touch 命令確實有效並且可以觸摸文件。
當 pi 使用者從 SSH 連接執行時,兩者都
xset
可以正常工作。dispon.sh
有任何想法嗎??
crontab
文件格式 ( )的手冊頁man 5 crontab
寫道,名稱也可用於“月”和“星期幾”欄位。使用特定日期或月份的前三個字母(不區分大小寫)。名稱範圍或列表是不允許的。
注意最後一句話:你不能使用
mon-fri
(但你可以使用1-5
)。您還錯過了註釋(第一行)提醒您正確的欄位順序:分鐘、小時、月日、月、星期幾、命令;但是您過早地放置了星期幾的值。這個更正後
crontab
的文件應該更適合您:SHELL=/bin/bash PATH=/usr/bin:/bin:/usr/local/bin:/home/pi/scripts # m h dom mon dow command 05 9 * * 1-5 dispon.sh >> /tmp/cronjob.log 2>&1 15 18 * * 1-5 xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1 */3 * * * * touch /tmp/1111 >> /tmp/cronjob.log 2>&1
最後,如果您發現
cron
顯然忽略了您的條目,您可以搜尋其最近的日誌報告以查看發生了什麼(如果有的話):grep CRON /var/log/syslog