すべての設定が正しいが、Cronジョブは実行されません。

すべての設定が正しいが、Cronジョブは実行されません。

このcron tqskは機能しません。

[main_usr@localhost ~]$ sudo crontab -l  -u root
0 * * * * /home/main_usr/cron_test1.sh > /home/main_usr/cron_test1_out.sh.out 2>&1

[main_usr@localhost ~]$ 

そして

$ ls -al cron_test1.sh
-rwxr-xr-x 1 main_usr main_usr 293 Apr  8 05:12 cron_test1.sh

ご覧のとおり、cronジョブに新しい行があります。ファイルが存在し実行可能です。これは一日前に作成されました。毎時間実行する必要があります。それにもかかわらず、「cron_test1_out.sh.out」はまだ作成されていません。

なぜ?

答え1

Cronジョブは/ bin / shと空の環境を使用して実行されるため、bash構成ファイルまたは他の環境ファイルをインポートする必要がある場合、またはcronファイルに環境変数を含めることもできます。通常、PATHは最大の犯罪者です。デフォルトでは、パスは/ usr / bin:/ binに設定されているため、スクリプトがこれら2つのディレクトリになくフルパスを持たない実行可能ファイルを参照すると、cronは失敗します。次のように、単純なKEY = VALUEを使用してcrontabで環境変数を設定できます。

PATH=/usr/bin:/bin:/usr/local/bin

答え2

しばらく前に同じ問題が発生しました。

/bin/bash を追加すると問題が解決しました。

例:

0 * * * * /bin/bash /path_to_your_script/script.sh > /output_directory

理由:シェルスクリプトを実行するときにスクリプトを実行する場所を定義する必要があるため、/bin/sh、/bin/zsh、またはその他の場所を使用してスクリプトを実行する必要があるかもしれません。

Cron自体はスクリプトを実行する場所を知りません。

また、/var/log/syslogと/var/mail/rootをチェックして原因を特定してください。

関連情報