GNU/Linux >> Linux の 問題 >  >> Linux

cronジョブのトラブルシューティング

Cronは、スケジュールされたコマンドを自動的に実行するLinuxサーバー用のサービスです。 cronジョブは、一連のシェルコマンド、スクリプト、またはその他のプログラムにすることができます。 cronタスクまたはジョブはさまざまな機能を実行でき、実行されると、完了またはエラーを通知する電子メールメッセージを送信できます。エラーが発生した場合、cronタスクのトラブルシューティングを行う方法はたくさんあります。この記事は、トラブルシューティングの支援またはcronジョブの基本に関するチュートリアルに使用してください。 cronジョブの作成について詳しく知りたい場合は、このテーマに関するナレッジベースのチュートリアルを確認してください。

Crontabを使用した構成の確認

コマンドラインから、ユーザーのcrontabを一覧表示することにより、スケジュールされたcronジョブを確認できます。このコマンドは、ユーザーのcrontabの内容を端末に出力します。

ユーザーとして実行できるのは:
crontab -l <​​/ code>

ルートとして、ユーザー名を指定することで、任意のユーザーのcrontabを表示できます。
crontab -l -u username

cronジョブのフォーマット方法に関する詳細情報は、 / etc / crontabにあります。 ファイル。以下はそのファイル内の例です。各アスタリスクは、数字または対応するフィールドに置き換えることができます。または、アスタリスクをそのままにして、その位置で可能なすべての数字を表すこともできます。たとえば、すべてのアスタリスクを付けたままにすると、cronジョブが毎分常に実行されることを意味します。

SHELL =/ bin / bash
PATH =/ sbin:/ bin:/ usr / sbin:/ usr / bin
MAILTO =root
#詳細については、man4crontabsを参照してください
#ジョブ定義の例:
#.----------------分(0-59)
#| .-------------時間(0-23)
#| | .----------月の日(1〜31)
#| | | .-------月(1〜12)またはjan、feb、mar、apr ...
#| | | | .----曜日(0〜6)(日曜日=0または7)または日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日
#| | | | |
#* * ***実行するユーザー名コマンド

cronの電子メールアドレスの変更

開始されると、cronはcrontabのMAILTO行内に設定されたメールアドレスに通知を送信します。

MAILTO ="[email protected]"

crontabを編集するには、ユーザーとして次のコマンドを実行できます。

crontab -e

または、rootとしてログインしている場合は、任意のユーザーのユーザー名を入力して、ユーザーが作成したスケジュールされたタスクを表示できます。

crontab -e -u username これらは、デフォルトのエディターでユーザーのcrontabを開きます。通常、 vim またはnano コマンドはファイルを開きます。これは、閉じる前に保存する他のテキストファイルを開くのと似ていることに注意してください。

MAILTO行は、cronの実行ステータスを送信する場所を示します。送信アドレスは通常、サーバーのホスト名とともにcronタスク作成者のユーザー名になります。したがって、電子メールの送信者アドレスは、[email protected]という構文に従います。メールがすぐに表示されない場合は、迷惑メールチェックボックスをオンにすることをお勧めします。

沈黙のクローン

cronジョブは、MAILTOアドレスで設定されている場合でも、出力を生成しないか、出力を無音にするように構成されている場合があります。次のいずれかが最後に表示されているcronジョブが表示されている場合は、cronが出力を停止したことを示しています。これらは、出力をnullデバイス(Linuxサーバーのブラックホール)に送信します。このような場合、出力を生成するにはcronジョブスクリプトからその行を削除する必要があります。

&> / dev / null

2>&1 / dev / null 一部のcronジョブは完全に無効になっています。これらはコマンドの前に「#」があり、実行時に無視された行になります。 「#」を削除して、cronジョブを再度アクティブにします。

cronサービスの確認

正しい設定を確認したら、cronシステムが有効になっていて実行されていることを確認します。次の3つのコマンドをそれぞれ使用して、crond(cronサービス)が実行されているかどうかを確認できます。

/etc/init.d/crond status

service crond status

systemctl status crond

上記のコマンドのいずれかを実行した後、crondサービスが実行されていないことがわかった場合は、次のいずれかで開始できます。

/etc/init.d/crond start

service crond start

systemctl start crond

/ var / log / cron

cronが有効になっていて、無音になっておらず、crondが実行されていることがわかったら、 / var / log / cronのパスにあるcronログを確認します。 。

cat / var / log / cron

出力例:

Oct223:45:01ホストCROND[3957]:(ルート)CMD(/usr/local/lp/apps/kernelupdate/lp-kernelupdate.pl> / dev / null 2>&1)
10月2日23:50:01ホストCROND[4143]:(ルート)CMD(/ usr / lib64 / sa / sa1 1 1)
10月2日23:50:01ホストCROND[4144]:(ルート)CMD (/ usr / local / maldetect / maldet --mkpubpaths>> / dev / null 2>&1)
ログには、どのユーザーがcronを実行したか、いつ、どのユーザーが実行したかが表示されます。開始すると、実行の日時とそれに続く個々のcron番号の角かっこが表示されます。このタイムスタンプは、スクリプトが正常に実行されたか、まったく実行されなかったかを確認するものではなく、cronシステムが最後にタスクを実行した日時のみを示します。それ以外にも、コードが正しく実行されていることを確認するために、cronスクリプト自体またはアプリケーションレベルの構成とそれぞれのログを調査する必要がある場合があります。

その他のcronサービス

この記事は、他の多くのcronタスクサービスと同様に、メインのcrondサービスの概要にすぎません。 anacronシステムは、毎日または毎時のジョブを構成する一般的に使用されるcronサービスであり、再起動時に実行するように設定することもできます。これらの種類のタスクのログは、 / var / log / cron内にあります。 、およびcrondによって実行されません。

その他のスケジュールされたタスクは、cronジョブとも呼ばれますが、crondシステムからは実行されません。これらのcronジョブは、多くの場合、Webサイトのコードまたは構成内で構成されます。実行されたかどうかを判断するには、cronスクリプトが相互作用する他の構成とログを調査する必要があります。

すべてのcronサービスと同様に、自動化されたジョブを操作して多数の毎日のタスクを実行できるため、その必要はありません。 cronタスクは、タスクや年数を変更しなくても失敗することがありますが、どこを見ればよいかを知ることは、cronジョブのトラブルシューティングの半分の戦いです。


Linux
  1. cronジョブ/自動タスク

  2. Crontabを使用してcronジョブをスケジュールする方法

  3. RCRON – cron ジョブの高可用性のセットアップ

  1. Linuxでの使い捨てcronジョブにatを使用する

  2. cron はどのようにジョブを内部的にスケジュールしますか?

  3. CRON ジョブを使用して URL にアクセスしますか?

  1. ClusterCronジョブ

  2. cronジョブを削除する方法

  3. CWPにcronジョブを追加する