crontabファイルが実行されているかどうかを確認する

crontabファイルが実行されているかどうかを確認する

crontab タスクを 1 分ごとに実行するように設定しました。

* * * * * sudo /usr/bin/php /root/scrapers/terra_plf/terra_swap_api.php

var/log/syslog ファイルにログが記録されています:

Jan  3 15:14:01 clearthefog CRON[26579]: (root) CMD (/usr/bin/php     /home/admin/scrapers/terra_plf/terra_swap_api.php)
Jan  3 15:15:01 clearthefog CRON[26623]: (root) CMD (sudo /usr/bin/php /root/scrapers/terra_plf/terra_swap_api.php)

まだ、DBには何も書き込まれませんファイルterra_swap_api.phpが実行するはずです。理由を教えてください。ファイルが実際に実行されたかどうかを確認する方法はありますか?

同じスクリプトをCLIで実行すると、完璧に動作します: php terra_swap_api.php

答え1

cron では sudo パスワードを要求されるため、単純に sudo を実行することはできません。そのコマンドにはパスワードなしの sudo を設定する必要があります。

php ファイルは /root ディレクトリにあるため (セキュリティ上の懸念事項であることに注意してください)、crontab を root ( sudo crontab -e) としてインストールし、そこに行を追加することができます (sudo なし)。

スクリプトに root 権限が必要ない場合は、sudo なしで実行できますが、/root は root ユーザーが所有し、制限されているため、ファイルを読み取り可能な場所に移動する必要があります。

関連情報