sudo Crontab は実行されていませんが、crontab は実行されていますか? :)

sudo Crontab は実行されていませんが、crontab は実行されていますか? :)

私は自分のユーザーで Crontab を使用して多数の curl スクリプトを実行していますが、それらは正常に動作し、そのうち 40 個が動作します。

しかし、コマンド「sudo crontab -e」を使用してルートの Crontab に保存したスクリプトは実行されておらず、約 1 か月前に動作を停止しましたが、2 年以上は正常に動作していました。

サーバー担当者と話をしてみましたが、誰も何が問題なのかわかりませんでした。ちなみに私はサーバーの専門家ではないので、ガイドに従うことはできますが、それだけです :)

試したことは、cron サービスの再起動、「新しい crontab のインストール」、root ユーザーを使用して通常の crontab 内のスクリプトの実行、サーバーの再起動、ファイル内のすべてを削除、MAILTO の削除です。

すべてのスクリプトは手動で実行するだけで機能します。

これは機能していない罰金です:

メール宛先=""

2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"

答え1

最も役立つのは、エラー メッセージを取得することです。

2  3  * * *  { date; bash -v "/usr/local/scripts/backup-mysql.sh"; date; }  &>/tmp/cron-backup-mysql.log
25 3  * * *  { date; bash -v "/usr/local/scripts/backup-prestashop.sh"; date; } &>/tmp/cron-backup-prestashop.log

出力は/tmp/cron-backup-mysql.logおよびに記録されます/tmp/cron-backup-prestashop.logbash -vスクリプトの行が読み取られるたびに出力されます。

ファイルの所有者をチェックして、ルートとして実行されているかどうかを確認できます。次に、ファイルを読み取って、開始時間と終了時間を確認し、実行が終了したかどうか、および期間が予想どおりであるかどうかを確認します。

スクリプトが正しく実行されるようになった場合、問題はおそらく暗黙的に呼び出されたシェル ( bash -vcrontab から削除してecho SHELL = $SHELLスクリプトに追加) か、スクリプトに実行権限がないこと ( chmod +x) にあります。

スクリプトがクラッシュした場合、bash -vはバグを見つけるのに役立ちます。-vを に置き換えることで詳細を表示できます-xが、これにより、評価される各式が出力に大量に表示されます。

関連情報