私はユーザーでCrontabを使用して多くのcurlスクリプトを実行します。それらは正常に動作し、そのうち40個が動作します。
しかし、コマンドー「Sudo crontab -e」を使用してルート「Crontab」にあるスクリプトは実行されておらず、約1か月前に動作を停止し、2年以上正常に動作しました。
サーバーの人々と話をしようとしたが、彼らの誰も何が間違っているのか考えていない。ところで私はサーバーの専門家ではありません、私はガイドに従うことができますが、それはそれです:)
私は試しました:cronサービスの再起動、「新しいcrontabのインストール」、rootユーザーを使用した通常のcrontabでのスクリプトの実行、サーバーの再起動、ファイル内のすべての削除、MAILTOの削除。
すべてのスクリプトは、手動で実行するだけで機能します。
これは機能しない罰金です:
MAILTO = ""
2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"
最も役立つのは、エラーメッセージを取得することです。
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
は、読み取られたとおりにスクリプトの行を出力します。
ファイルの所有者をチェックして、rootとして実行されていることを確認できます。次に、ファイルを読むと、実行が終了したかどうか、および期間が予想どおりかどうかを確認するための開始時刻と終了時刻があります。
スクリプトが正しく実行されるようになった場合、問題はおそらくシェルが暗黙的に呼び出された(crontabからbash -v
を削除してecho Shell = $Shell
をスクリプトに追加)またはスクリプトに実行許可がありません(chmod +x
) 。
スクリプトがクラッシュした場合、bash -v
はバグを見つけるのに役立ちます。 -v
を-x
に置き換えることで詳細を表示できますが、これにより、評価される各式で出力があふれます。