crontabはいくつかのコマンドのみを実行しますか?

crontabはいくつかのコマンドのみを実行しますか?

私はRaspbianベースのFullPageOSディストリビューションをインストールしたキオスクとして使用するRaspberry Pi 2を持っています。

crontabで実行しようとすると、一部のコマンドが自動的に失敗することを除いて、すべてがうまく機能します。

pi ユーザーが特定の時間にキオスクを開閉する 2 つのコマンドがあります。

$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を実行し、モニターを開くときにスクリプトの一部としてxsetを実行するなど、さまざまなアプローチを試しました。

dispon.shスクリプトの内容(chmod a + x):

#!/bin/bash
xset -display :0 dpms force on
xset -display :0 -dpms

どちらのコマンドも機能しないようです(ショーを開いたり閉じたりすることはできません)、/tmp/cronjob.logにエラーメッセージも残しません。

ただし、touchコマンドは機能し、ファイルをタッチします。

xsetSSH接続を介してpiユーザーとして実行すると、両方がうまく機能します。dispon.sh

どんなアイデアがありますか? ?

答え1

crontabfileformat() のマニュアルページはman 5 crontab次のように書きます。

月と曜日のフィールドにも名前を使用できます。特定の日付または月の最初の3文字を使用してください(大文字と小文字を区別しない)。名前の範囲またはリストは許可されません。

最後の文章に注目してください。使用できません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

答え2

domフィールドの列3には、コマンドを実行する月ごとの日数を指定する必要があります。たとえば、1〜3はその月の1〜3日にのみ実行されます。月曜日から金曜日までの平日を最後の列に移動する必要があります。

関連情報