質問: 指定した時刻に cron ジョブが実行されないのはなぜですか?
答え: cron ジョブが実行されない理由はたくさんあります。指定した時間に cron ジョブが実行されない 5 つの重要な理由と、それらの問題を解決する方法を確認しましょう。
1.時間フィールドの誤解と間違った値の指定。
時刻フィールドの誤解、および予想/意図された時刻に言及していない時刻フィールドの指定された値。
たとえば、午後 8 時にコマンドを実行するには、時刻を 24 時間形式で指定する必要があります。つまり、以下に示すように、午後 8 時は 8 ではなく 20 です。
0 8 * * * /home/ubuntu/full-backup [Note: The is wrong for 8 p.m]
0 20 * * * /home/ubuntu/full-backup [Note: This is correct for 8 p.m]
チュートリアル Linux Crontab:15 Awesome Cron Job Examples を読んで、crontab について深く理解してください。私たちの定期的な読者の 1 人である Binny は、ユーザー インターフェイスのさまざまな crontab フィールドに適切な値を選択すると、cron エントリを生成する Web インターフェイスを作成しました。
2. crontab 内のシェル スクリプトまたはコマンドへの無効なパス
シェル スクリプトへのフル パスが crontab で指定されていることを確認してください。
0 8 * * * tape-backup [Note: Invalid. No full path specified] 0 8 * * * /home/debian-os/bin/tape-backup [Note: Valid. This is correct with full path]
注: crontab でフル パスを指定したくない場合は、必ず crontab に PATH 変数を追加してください (例 #14)
3. Cron 内のシェル スクリプトの実行権限がありません
正しいパスで正しいコマンドを指定した可能性がありますが、コマンドに実行権限がない可能性があります。 Unix 標準コマンドを使用している場合、デフォルトで実行権限が設定されます。
ただし、一部のユーザー定義コマンド (シェル スクリプト) を使用している場合は、以下に示すように実行権限を付与してください。
*/15 * * * * /home/fedora-os/check-disk-space [Note: Executes check-disk-space every 15 minutes] # cd /home/fedora-os # chmod u+x check-disk-space
4. Cron ジョブ コマンドまたはシェル スクリプトの %age
コマンドに % が含まれている場合、コマンドは実行されません。この問題を修正する方法については、以前の Crontab %age 問題に関する FAQ を参照してください。
5.システム管理者による Cron ジョブの実行が許可されていません
システム管理者は、cron ジョブを実行できるユーザーと実行できないユーザーを決定できます。そのため、ユーザーによる cron ジョブの実行を拒否するために、sysadmin がユーザー名を /etc/cron.deny ファイルに配置した可能性があります。
root 権限を持っている場合は、/etc/cron.deny ファイルを調べて、自分の名前がそこにリストされていないことを確認してください。リストされている場合は、ファイルを編集して名前を削除します。 root 権限がない場合は、システム管理者に連絡してください。