Linux Crontabファイルを編集してジョブをスケジュールする方法

前書き

Linuxにはcronというデーモンがあり、定期的にプロセスを実行するために使用されます。

これが実行される方法は、システム上の特定のフォルダをチェックしてスクリプトを実行することです。 たとえば、/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthlyというフォルダがあります。 / etc / crontabというファイルもあります。

デフォルトでは、スクリプトを関連するフォルダに配置するだけで、定期的に実行することができます。

たとえば、CTRL、ALT、Tキーを押してターミナルウィンドウを開き、以下のlsコマンドを実行します。

ls / etc / cron *

毎時間、毎日、毎週、毎月実行されるプログラムまたはスクリプトのリストが表示されます。

これらのフォルダの問題は、少し曖昧だということです。 たとえば、毎日スクリプトは1日に1回実行されますが、その日にスクリプトが実行される時間は制御できません。

それはcrontabファイルが入ってくる場所です。

crontabファイルを編集することで、スクリプトやプログラムを実行したい日付と時刻に実行することができます。 たとえば、毎晩午後6時にファイルをバックアップしたいとします。

アクセス許可

crontabコマンドを実行するには、ユーザーがcrontabファイルを編集する権限を持っている必要があります。 基本的に、crontab権限を管理するために使用される2つのファイルがあります。

ファイル/etc/cron.allowが存在する場合、crontabファイルを編集したいユーザーは、そのファイル内になければなりません。 cron.allowファイルが存在しないが/etc/cron.denyファイルがある場合、ユーザーはそのファイルに存在してはいけません。

両方のファイルが存在する場合、/etc/cron.allowは/etc/cron.denyファイルを上書きします。

どちらのファイルも存在しない場合は、ユーザーがcrontabを編集できるかどうかはシステム構成によって異なります。

rootユーザーは常にcrontabファイルを編集できます。 suコマンドを使用してrootユーザーに切り替えるか、sudoコマンドを使用してcrontabコマンドを実行します。

Crontabファイルの編集

権限を持つ各ユーザーは、独自のcrontabファイルを作成できます。 cronコマンドは、基本的に複数のcrontabファイルが存在するかどうかを調べ、それらをすべて実行します。

crontabファイルがあるかどうかを確認するには、次のコマンドを実行します。

crontab -l

crontabファイルがない場合は、 "crontab for "というメッセージは表示されません。crontabファイルが表示されます(この機能はシステムによって異なります。このファイルを編集しないでください)。

crontabファイルを作成または編集するには、次のコマンドを実行します。

crontab -e

デフォルトでは、デフォルトのエディタが選択されていない場合、使用するデフォルトのエディタを選択するよう求められます。 個人的には、私は使用するのがかなり簡単で、端末から実行されるので、 nanoを使いたい。

開いているファイルには多くの情報がありますが、重要な部分はコメントセクションの終わりの直前の例です(コメントは#で始まる行で示されます)。

#mh dom mon dowコマンド

0 5 * * 1 tar -zcf /var/backups/home.tgz/ home /

crontabファイルの各行に収まる6つの情報があります:

各項目(コマンドを除く)について、ワイルドカード文字を指定することができます。 次の例のcrontab行を見てください:

30 18 * * * tar -zcf /var/backups/home.tgz/ home /

上記のコマンドが言っていることは、30分、18時間、および任意の日、月、および曜日に、ホームディレクトリを/ var / backupsフォルダに圧縮してtarコマンドを実行することです。

1時間ごとに30分後に実行するコマンドを取得するには、次のコマンドを実行します。

30 * * * *コマンド

午後6時過ぎに毎分実行するコマンドを取得するには、次のコマンドを実行します。

* 18 * *コマンド

したがって、crontabコマンドの設定には注意が必要です。

例えば:

* * * 1 *コマンド

上記のコマンドは、1月に毎週毎日毎分実行されます。 私はそれがあなたが望むものであるとは思わない。

1月1日午前5時にコマンドを実行するには、crontabファイルに対して次のコマンドを実行します。

0 5 1 1 *コマンド

Crontabファイルを削除する方法

ほとんどの場合、crontabファイルを削除したくないかもしれませんが、crontabファイルからいくつかの行を削除したい場合があります。

ただし、ユーザーのcrontabファイルを削除する場合は、次のコマンドを実行します。

crontab -r

これを行うより安全な方法は、次のコマンドを実行することです。

crontab -i

これは「あなたは本当ですか?」という質問をします。 crontabファイルを削除する前に。