場合によっては、定期的に、または特定の事前定義された間隔で実行する必要のあるタスクがある場合があります。このようなタスクには、データベースのバックアップ、システムの更新、定期的な再起動の実行などが含まれます。 Linuxでのこのようなタスクは、 cronジョブ(Crontab)と呼ばれます。 cronジョブは、タスクの自動化に使用されます これは便利で、反復的で、時にはありふれたタスクの実行を簡素化するのに役立ちます。 cron は、これらのジョブをスケジュールして、指定された間隔で実行できるようにするデーモンです。このチュートリアルでは、cronジョブを使用してジョブをスケジュールする方法を学習します。
Crontabファイル
cronテーブルとも呼ばれるcrontabファイル は、タスクの実行の時間間隔を指定するルールまたはコマンドを含む単純なテキストファイルです。 crontabファイルには2つのカテゴリがあります:
1)システム全体のcrontabファイル
これらは通常、root権限を必要とするLinuxサービスおよび重要なアプリケーションによって使用されます。システムのcrontabファイルは/etc / crontabにあります。 また、rootユーザーのみがアクセスおよび編集できます。これは通常、システム全体のデーモンの構成に使用されます。 crontabファイルは次のようになります。
2)ユーザーが作成したcrontabファイル
Linuxユーザーは、crontabコマンドを使用して独自のcronジョブを作成することもできます。作成されたcronジョブは、それらを作成したユーザーとして実行されます。
すべてのcronジョブは/var/ spool / cron(RHELおよびCentOSディストリビューションの場合)および/ var / spool / cron / crontabs(DebianおよびUbuntuディストリビューションの場合)に保存され、cronジョブは作成したユーザーのユーザー名を使用して一覧表示されます。 cronジョブ
cronデーモン / etc / crontabをチェックするバックグラウンドでサイレントに実行されます ファイルと/var / spool / cron および/etc/cron.d*/ ディレクトリ
crontab コマンドはcronファイルの編集に使用されます。 crontabファイルの構造を見てみましょう。
crontabファイルの構造
先に進む前に、まずcrontabファイルがどのように見えるかを調べることが重要です。 crontabファイルの基本的な構文は、アスタリスクで表された5つの列と、それに続く実行するコマンドで構成されています。
* * ***コマンド
この形式は、次のように表すこともできます。
m h dmoydowコマンド
または
m h d moy dow / path / to / script
各エントリについて詳しく説明しましょう
- m :これは分を表します。 0から59まで指定されます
- h :これは、0から23までの指定された時間を示します
- d :これは月の日を表します。 1から31までの範囲で指定`
- moy :これはその年の月です。 1〜12の範囲で指定されます
- やる :これは曜日です。 0〜6の範囲で指定されます。0=日曜日
- コマンド :これは実行されるコマンドです。例:バックアップコマンド、再起動、コピー
cronジョブの管理
crontabファイルのアーキテクチャを確認した後、cronジョブを作成、編集、および削除する方法を見てみましょう。
cronジョブの作成
rootユーザーとしてcronジョブを作成または編集するには、コマンドを実行します
#crontab -e
cronジョブを作成したり、別のユーザーとしてタスクをスケジュールしたりするには、構文を使用します
#crontab -u username -e
たとえば、ユーザーPradeepとしてcronジョブを実行するには、次のコマンドを発行します。
#crontab -u Pradeep -e
既存のcrontabファイルがない場合は、空白のテキストドキュメントが表示されます。 crontabファイルが存在する場合、-eオプションを使用すると、ファイルを編集できます。
crontabファイルの一覧表示
作成されたcronジョブを表示するには、次のように-lオプションを渡すだけです
#crontab -l </ P>
crontabファイルの削除
cronファイルを削除するには、crontab -eを実行して、必要なcronジョブの行を削除してファイルを保存します。
すべてのcronジョブを削除するには、次のコマンドを実行します。
#crontab -r
そうは言っても、タスクをスケジュールするさまざまな方法を見てみましょう
タスクのスケジューリングにおけるcrontabの例。
示されているように、すべてのcronジョブはシバンヘッダーを使用しています
#!/ bin / bash
これは、使用しているシェル(この場合はbashシェル)を示しています。
次に、前に指定したcronジョブエントリを使用して、タスクをスケジュールする間隔を指定します。
毎日午後12時30分にシステムを再起動するには、次の構文を使用します。
30 12 * * * / sbin / restart
午前4:00に再起動をスケジュールするには、次の構文を使用します。
0 4 * * * / sbin / restart
注: アスタリスク*は、すべてのレコードを照合するために使用されます
スクリプトを1日2回、たとえば午前4時と午後4時に実行するには、構文を使用します。
0 4,16 * * * / path / to / script
毎週金曜日の午後5時に実行するcronジョブをスケジュールするには、次の構文を使用します。
0 17**金/path/ to / script
または
0 17 * * * 5 / path / to / script
30分ごとにcronジョブを実行する場合は、次を使用します。
* / 30 * * * * / path / to / script
5時間ごとにcronを実行するようにスケジュールするには、実行します
* * / 5 * * * / path / to / script
たとえば、水曜日と金曜日の午後6時にスクリプトを実行するには、次のコマンドを実行します。
0 18 * * wed、fri / path / to / script
単一のcronジョブを使用するように複数のタスクをスケジュールするには、たとえば次のようにセミコロンを使用してタスクを区切ります。
* * * * * / path / to / script1; / path / to / script2
特別な文字列を使用してcronジョブの作成時間を節約
一部のcronジョブは、特定の時間間隔に対応する特別な文字列を使用して簡単に構成できます。たとえば、
1)@hourlyタイムスタンプは0 * * * *
に対応します1時間ごとの最初の1分にタスクを実行します。
@hourly / path / to / script
2)@dailyタイムスタンプは0 0 * * *
と同等です毎日の最初の1分(深夜)にタスクを実行します。日常の仕事をするときに重宝します。
@daily / path / to / script
3)@weeklyタイムスタンプは0 0 1 * mon
と同等です毎週の最初の1分間にcronジョブを実行し、週は月曜日に始まります。
@weekly / path / to / script
3)@monthlyはエントリ0 0 1 * *
に似ています月の初日の最初の1分間にタスクを実行します。
@monthly / path / to / script
4)@yearlyは0 0 1 1 *
に対応します毎年最初の1分間にタスクを実行し、新年の挨拶を送信するのに役立ちます🙂
@monthly / path / to / script
crontabの制限
Linuxユーザーは、crontabコマンドを使用する権限を持つユーザーを制御できます。これは、 /etc/cron.denyを使用して可能です。 および/etc/cron.allow ファイル。デフォルトでは、/ etc / cron.denyファイルのみが存在し、エントリは含まれていません。ユーザーがcrontabユーティリティを使用できないようにするには、ユーザーのユーザー名をファイルに追加するだけです。ユーザーがこのファイルに追加され、ユーザーがcrontabコマンドを実行しようとすると、以下のエラーが発生します。
ユーザーが引き続きcrontabユーティリティを使用できるようにするには、/ etc/cron.denyファイルからユーザー名を削除するだけです。
/etc/cron.allowファイルが存在する場合、ファイルにリストされているユーザーのみがcrontabユーティリティにアクセスして使用できます。
どちらのファイルも存在しない場合は、rootユーザーのみがcrontabコマンドを使用する権限を持ちます。
crontabエントリのバックアップ
crontabエントリをバックアップすることを常にお勧めします。これを行うには、構文を使用します
#crontab -l> /path/to/file.txt
たとえば、
# crontab -l > /home/james/backup.txt
cronログの確認
cronログは/var/ log/cronファイルに保存されます。 cronログを表示するには、次のコマンドを実行します。
# cat /var/log/cron
ライブログを表示するには、次のようにtailコマンドを使用します。
# tail -f /var/log/cron
結論
このガイドでは、繰り返しのタスクを自動化するためのcronジョブの作成方法、バックアップ方法、およびcronログの表示方法を学習しました。この記事がcronジョブに関して有用な洞察を提供することを願っています。フィードバックやコメントをお気軽に共有してください。