Cron Jobs:完全な初心者向けチュートリアル

Cron Jobs Complete Beginners Tutorial



Cronは、LinuxまたはUNIXライクなオペレーティングシステムで最も便利なユーティリティであり、ユーザーの介入なしに、特定のスケジュールでコマンドまたはスクリプトを実行できます。スケジュールされたコマンドとスクリプトは、cronジョブとも呼ばれます。これは主に、スケジュールされたバックアップの実行、一時ファイルのクリーニング、システムメンテナンス、およびその他のさまざまな定期的なジョブなどの定期的なジョブの自動化に使用されます。これは、WindowsOSのタスクスケジューラに似ています。

このチュートリアルでは、cronを使用してジョブをスケジュールするために理解する必要があるすべての基本的な紹介を提供します。これには、cronの基本的な構文、crontabファイルの編集、いくつかの例を含むcronを使用したジョブのスケジュール、cronジョブの表示などが含まれます。







cronジョブの基本

cronジョブのいくつかの基本を理解しましょう。



cronとは何ですか?

Crondは、バックグラウンドで実行され、毎分チェックして、その時間にスケジュールされているジョブがあるかどうかを確認するLinuxシステムのデーモンです。存在する場合はそのジョブを実行し、存在しない場合は非アクティブのままになります。



cronジョブの構文

cronジョブの構文は次のとおりです。





* * * * *指図/脚本

左から:

  • 最初の*は分(0-59)に対応します
  • 2番目の*は時間(0-23)に対応します
  • 3番目の*は月の日(1-31)に対応します
  • 4番目の*は、月(1〜12)に対応します。
  • 5番目の*は曜日(0-6、日曜日から土曜日)に対応します

フィールドに複数の値を指定するには、次の演算子記号を使用します。



  1. アスタリスク(*): フィールドに可能なすべての値を指定するには
  2. ダッシュ(-):NS 値の範囲を指定します
  3. カンマ(、): 値のリストを指定するには
  4. セパレーター(/): ステップ値を指定するには

Crontabファイルの編集

Crontabは、特定の構文でスケジュールされたジョブを含むファイルです。 crontabファイルには2つのタイプがあります。 1つはシステム固有のcronジョブ用で、もう1つはユーザー固有のcronジョブ用です。

システムcronジョブ

システム全体のcronジョブは次の場所にあります。 / etc / crontab ファイルと /etc/cron.d ディレクトリ、およびそれらは実行されます /etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly。 これらのファイルにアクセスできるのは、システム管理者だけです。

システム管理者は、次のコマンドを使用してcronジョブを定義できます。

$ナノ /NS/crontab

のジョブの構文は次のとおりです。 / etc / crontab ファイル:

#min hr dayofmonth month dayofweekusernameコマンド
* * * * *user1ifconfig

ユーザー固有のcronジョブ

ユーザー固有のcronジョブは/にあります var /スプール/ cron / crontabs ディレクトリ。これらのジョブは手動で編集できますが、crontab-eコマンドを使用してこれらのジョブを編集することをお勧めします。

標準ユーザーは、次のコマンドを使用してcronジョブを定義できます。

$crontab-と

たとえば、テストユーザーとしてログインしている場合、crontab -eコマンドを実行すると、テストユーザーのcrontabファイルが編集されます。同様に、rootユーザーとしてログインしている場合、crontab-eコマンドはrootユーザーのcrontabファイルを編集します。

ターミナルで以下のコマンドを発行して、他のユーザーのcrontabファイルを編集します。

$sudocrontab-u <ユーザー名>> -と

たとえば、test1ユーザーとしてログインしていて、test2ユーザーのcrontabファイルを編集する場合、コマンドは次のようになります。

$sudocrontab-utest2-と

crontabファイルに追加できるcronジョブの構文は次のとおりです。

#m h dayofmonth monthdayofweekコマンド
* * * * * ifconfig

ユーザー固有のジョブで、ユーザー名がファイルされていないことがわかります。

Crontabコマンド

crontabコマンドは、cronジョブを編集、一覧表示、および削除するために使用されます。

  • crontab -e 現在のユーザーのcrontabファイルを編集するには
  • crontab -l crontabファイルの内容を表示するには
  • crontab -u [ユーザー名] 他のユーザーのcrontabファイルを編集するには
  • crontab -r 現在のユーザーのcrontabファイルを削除するには
  • crontab -i 現在のユーザーのcrontabファイルを削除する前にプロンプ​​トを表示するには

cronを使用したジョブのスケジューリング

Cronを使用すると、特定の時間、日付、間隔で最小単位の分単位でジョブを実行できます。つまり、1分ごとにジョブを実行できます。

cronを使用してジョブをスケジュールするには、前のセクションで説明した方法を使用してcrontabファイルを開きます。 crontabファイルを開くと、テキストエディタを選択するように求められます。番号を入力して、好みのテキストエディタを選択します。ファイルの一番下までスクロールダウンし、上記の構文でジョブを追加します。ファイルの各行は1つのコマンドを指定します。行の最初の5つのエントリはスケジュールされた時刻を指定し、最後のエントリは実行するコマンドまたはスクリプトを指定します。

例:

crontabファイルの次の行は、月曜日から土曜日までの毎日の5時間後の30分ごとにコマンド/スクリプトを実行するようにcronジョブをスケジュールします。

* /30 5 * * 1-6指図/脚本

このフィールドでは、コマンドを実行する分を指定します。 0から59まで指定されます。このフィールドの*は、1分ごとにジョブを実行することを意味します。上記のcrontab行で、* / 30は、指定されたコマンド/スクリプトを30分ごとに実行するようにcronジョブに指示します。

時間

このフィールドでは、コマンドを実行する時間を指定します。 0から23まで指定されます。このフィールドの*は、1時間ごとにジョブを実行することを意味します。上記のcrontab行で、値5は、指定されたコマンド/スクリプトを5時間ごとに実行するようにcronジョブに指示します。

曜日

このフィールドでは、コマンドを実行する特定の月の日を指定します。 1から31まで指定されます。このフィールドの*は毎日を意味します。上記のcrontab行で、*は指定されたコマンド/スクリプトを毎日実行するようにcronジョブに指示します。

年の月

このフィールドでは、コマンドを実行する特定の月を指定します。 1から12まで指定されます。このフィールドの*は、毎月を意味します。上記のcrontab行で、*はcronジョブに指定されたコマンド/スクリプトを毎月実行するように指示します。

曜日

このフィールドでは、コマンドを実行する特定の曜日を指定します。日曜日から土曜日までは0から6まで指定されます(日曜日は0、土曜日は6)。このフィールドの*は、1週間の毎日を意味します。上記のcrontab行で、*は、指定されたコマンド/スクリプトを1週間に毎日実行するようにcronジョブに指示します。

cronジョブの例

cronジョブの例をいくつか示します。

15分ごとにcronジョブを実行します

15分ごとに実行するようにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

* /15 * * * *指図/脚本

毎日午前5時にcronジョブを実行します

毎日午前5時に実行されるようにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

0 5 * * *指図/脚本

毎日午後5時にcronジョブを実行します

毎日午後5時に実行されるようにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

0 17 * * *指図/脚本

毎月1日の午前9時にcronジョブを実行します

毎月1日の午前9時にcronジョブを実行するようにスケジュールするには、crontabファイルに次の行を追加します。

0 9 1 * *指図/脚本

3月15日ごとに1時間ごとにcronジョブを実行します

3月15日ごとに1時間ごとにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

0 * 15 3 *指図/脚本

5時間ごとにcronジョブを実行します

5時間ごとにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

0 * /5 * * *指図/脚本

15分ごとにcronジョブを実行します

15分ごとに実行するようにcronジョブをスケジュールするには、crontabファイルに次の行を追加します。

* /15 * * * *

文字列の使用

次の文字列を使用して、ジョブを定義することもできます。

  1. @hourly: 1時間に1回ジョブを実行する、つまり、 0 * * * *
  2. @夜中: 1日に1回ジョブを実行する、つまり、 0 0 * * *
  3. @毎日: 真夜中と同じ
  4. @weekly: 毎週1回ジョブを実行する、つまり、 0 0 * * 0
  5. @monthly: 月に1回ジョブを実行する、つまり、 0 0 1 * *
  6. @毎年: 年に1回、つまり、 0 0 1 1 *
  7. @yearly: @annuallyと同じ
  8. @リブート: 起動ごとに1回ジョブを実行する

たとえば、スクリプトまたはコマンドを毎週実行するには、crontabファイルのエントリは次のようになります。

@毎週のコマンド/脚本

事前定義されたcronディレクトリ

Linuxには、保存されたスクリプトが自動的に実行される事前定義されたcronディレクトリがいくつかあります。これらのディレクトリの下にスクリプトを配置すると、設定された時間に自動的に実行されます。

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

たとえば、スクリプトを月に1回実行するには、スクリプトを/etc/cron.monthlyに配置する必要があります。

cronジョブを表示する

現在のユーザーの求人を表示する

次のコマンドを使用して、現在のユーザーに対してスケジュールされているすべてのcronジョブを表示します。

$crontab-NS

ルートユーザーの求人を表示する

rootユーザーのスケジュールされたすべてのジョブを表示するには、ターミナルで次のコマンドを発行します。

$ /NS/crontab

rootユーザーとしてログインするか、sudoとしてコマンドを実行する必要があります。

他のユーザーの求人を表示する

特定のユーザーのスケジュールされたすべてのジョブを表示するには、ターミナルで次のコマンドを発行して、を実際のユーザー名に置き換えます。

$sudocrontab-u <ユーザー名>> -NS

このコマンドを実行するには、sudo権限が必要です。

1時間ごとのcronジョブを表示する

1時間ごとに実行するように構成されているすべてのcronジョブを表示するには、ターミナルで次のコマンドを発行します。

$ls -NS /NS/cron.hourly

毎日のcronジョブを表示する

毎日実行するように構成されているすべてのcronジョブを表示するには、ターミナルで次のコマンドを発行します。

$ls -NS /NS/cron.daily/

毎週のcronジョブを表示する

毎週実行するように構成されているすべてのcronジョブを表示するには、ターミナルで次のコマンドを発行します。

$ls -NS /NS/cron.weekly/

毎月のcronジョブを表示する

毎月実行するように構成されているすべてのcronジョブを表示するには、ターミナルで次のコマンドを発行します。

$ls -NS /NS/cron.monthly/

すべてのcronジョブをバックアップする

削除した場合に回復できるように、すべてのcronジョブのバックアップをファイルに保存することをお勧めします。現在のすべてのジョブのバックアップを作成するには、リダイレクト演算子を使用してcrontab-lの出力をファイルにリダイレクトします。

$crontab-NS >>backup_cron.txt

スケジュールされたすべてのcronジョブの削除

スケジュールされたすべてのcronジョブを削除するには、次のように-rフラグを使用します。

$crontab-NS

cronの許可

次の2つのファイルを使用して、crontabコマンドへのアクセスを制限できます。 etc /cron.allowおよび/etc/cron.deny。

  • /etc/cron.allow – crontabコマンドへのアクセスを許可するユーザー(1行に1人)を追加します。これらのユーザーは、スケジュールジョブを実行できます。
  • /etc/cron.deny – crontabコマンドへのアクセスを拒否するユーザー(1行に1人)を追加します。これらのユーザーは、スケジュールされたジョブを実行できません。

Crontab構文ジェネレーター

crontabの構文を生成できるWebサイトがいくつかあります。これらのWebサイトでは、構文を覚えていなくてもcrontab式を簡単に生成できます。次のような構文ジェネレーターに利用できるさまざまなWebサイトがありますが crontabgenerator.comcrontab-generator.org 、 と cronmaker.com 。私が最も好み、役立つと思ったのは crontab.guru 。ユーザー入力に基づいて、crontabファイルにコピーアンドペーストできるcrontab式を生成します。

結論

このチュートリアルでは、cronジョブの基本、その構文、およびその設定方法について説明しました。また、cronジョブを表示する方法、バックアップを作成する方法、および不要になった場合にそれらを削除する方法についても説明しました。