私は自分のユーザーで 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.log
。 bash -v
スクリプトの行が読み取られるたびに出力されます。
ファイルの所有者をチェックして、ルートとして実行されているかどうかを確認できます。次に、ファイルを読み取って、開始時間と終了時間を確認し、実行が終了したかどうか、および期間が予想どおりであるかどうかを確認します。
スクリプトが正しく実行されるようになった場合、問題はおそらく暗黙的に呼び出されたシェル ( bash -v
crontab から削除してecho SHELL = $SHELL
スクリプトに追加) か、スクリプトに実行権限がないこと ( chmod +x
) にあります。
スクリプトがクラッシュした場合、bash -v
はバグを見つけるのに役立ちます。-v
を に置き換えることで詳細を表示できます-x
が、これにより、評価される各式が出力に大量に表示されます。