Linux

crontab 只執行一些命令?

  • June 19, 2018

我有一個 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

引用自:https://unix.stackexchange.com/questions/450588