web-dev-qa-db-ja.com

Cronジョブが実行されていませんか?

次のようなcrontabファイルがあります。

* * * * * /home/abliskovs/update/update.sh

ただし、syslogでジョブが実行されたことの証拠を確認すると、実行されたことを示すものは何もありません。実行中かどうかを確認するにはどうすればよいですか?

crontab -lは次を出力します。

* * * * * /home/abliskovs/update/update.sh

24
Alex Bliskovsky

>>/tmp/testlog.logをcrontabエントリの最後に追加します(ファイルに出力をリダイレクトするには、実行中かどうかを調査または確認し、さらに2>&1にエラーコンソールからの出力を含めます)

0 * * * * /home/abliskovs/update/update.sh 2>&1 /tmp/testlog.log

また、以下を確認してください。

  • 正しい方法でcronjobsを追加します。自分のアカウント内でcrontab -eを使用した場合、スクリプトはユーザーで実行されます(したがって、crontabエントリのフィールドは1つ少なくなります-実行するユーザー、それが知られているように)。上記を単に/etc/cron.dにコピーした場合、ユーザーを指定しなかったため(または「bash」という名前のユーザーが見つからなかったため)失敗します。
  • スクリプトファイルが実行可能であることを確認してください。そうでない場合、スクリプトファイルは実行されません。
  • CronジョブをリロードしますSudo service reload、またはcronサービスを再起動しますSudo /etc/init.d/cron restart

ファイルを実行可能にする方法

ファイルを実行可能にするいくつかの方法

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh
20

スクリプトファイルが実行可能であることを確認してください{chmod 755}それ以外の場合は実行されません

3
user25

シェルスクリプトupdate.shには、おそらくエラーが含まれています。たとえば、コマンドが見つからないために実行できないコマンドもあります。この場合、PATH変数にコマンドにパスを追加するか、コマンドの前に直接追加するのが役立つ場合があります。また、MAILTOの電子メールアドレスを指定することもできます。Cronjobsの実行結果の電子メールはこのアドレスに送信されます

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

また、mailでローカルメールボックスをチェックし、/var/log/syslogのsyslogファイルでエラーをチェックすることもできます。この関連質問も参照してください cronjobsは動作しない可能性があります

0
0x4a6f4672

私は同じ問題を経験しましたが、その原因は、crontabに許可がないためにcrontabが実行されていなかったことです。ファイルを変更して/tmpt/output.logに入れました

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

これがあなたのために働くかどうか私に知らせてください。

0
Kamaro Lambert