実装されている Linux のスケジュールされたタスクには、cron、anacron、at などが含まれますが、私が日常の仕事で触れるのは cron サービスです。 cron はサービス名、crond はバックグラウンドプロセス、crontab はカスタマイズされたスケジュールされたタスクリストです。スケジュールされたタスクは、プロジェクトで個別の機能を実装するためによく使用されます。最近、スケジュールされたタスクが実行されない状況に遭遇しました。これまであまり知らなかったため、時間と手間がかかり、ようやく問題が見つかりました。 。このため、今後遠回りを避けるためのトラブルシューティング テクニックをいくつか紹介したいと思います。
1. crondサービスが実行されているか確認します。
コマンド pgrepcrond または /sbin/servicecrondstatus を使用して crond プロセスの PID を表示し、crond サービスが実行されているかどうかを確認できます。
2. cron サービスが動作しているかどうかを確認します。
コマンド sudotail–f/var/log/cron を使用します
コマンドがこのログに表示されている限り、それは実行されたことを意味します。このステップに到達した時点で、ログに実行記録がないことがわかりました。これは、スケジュールされたタスクが実行されなかったことを意味します。
3. この後、実行されなかった理由を調査する必要があります。おそらく次のような状況が考えられます。
(1) スクリプト: スクリプトの問題により crontab が実行されなくなる可能性が非常に高く、最も一般的なのはスクリプトを確認する以外に方法がありません。スクリプトを自動的に実行して、エラーが報告されたかどうかを確認できます。エラーが報告された場合は、スクリプトを検出します。
自動実行は成功しました。環境変数が crontab の実行失敗の原因になっているかどうかを確認してください。タスクの実行環境は、現在のユーザーまたは指定したユーザーの実行環境ですlinux スケジュールされたタスクは実行されません
。そのため、コーディングlinux スケジュールされたタスクが実行されない場合は、ファイルを参照するか、フルパス名、または参照ファイルを置き換える、またはコマンドのパスを環境変数に追加します。 (2) システム時間が異なると、スケジュールされたタスクが実行されない場合もあります。この場合は、システム時間を確認する必要があります。
日付(表示)日付 – smm/dd/yy (システム時刻を変更)
(3) crontab デーモンが暴走したので、プロセスを再起動します。
サービスcrondrestart
(4) スクリプトのエンコーディングに問題があります。
スクリプトは Windows で Linux rar をコンパイルします。Linux に転送されると、「锘?!/bin/bash」と報告されます。vi エディターを使用して新しいシェル スクリプトを作成し、内容を入力して保存します。(5) スクリプトに実行権限があるかを確認します。スクリプトを実行するユーザーに、変更されたファイルを実行する権限があることを確認する必要があります。
以上がLinux のスケジュールされたタスクが実行されない場合はどうすればよいですか?この記事ではトラブルシューティングの方法を説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。