Cron は時間ベースのジョブ スケジューラであり、特定の時間または間隔でコマンドを実行するように構成されています。各ユーザーには、何をどの間隔で実行するかを定義する cron テーブルがあります。 crontab コマンドは、cron ジョブの作成、変更、および表示に使用されます。
構成ファイルとディレクトリ
– Cron は、crontabs と呼ばれる一連のファイルによって制御されます。
– /etc/crontab にマスター ファイルがあります。 、/var/spool/cron/ 内のユーザーの crontab ファイルとともに .後者のディレクトリでは、ファイルにはユーザーのユーザー名と同じ名前が付けられます。
– /etc/crontab ファイルは、定期的に複数のサブディレクトリ内の項目を自動的に実行します。スクリプトはさまざまなディレクトリに配置されます – /etc/cron.* 以下の時間間隔で実行されます。これらのディレクトリ内のすべてのスクリプトは、root 権限で実行されます。
ディレクトリ | 時間 |
---|---|
/etc/cron.hourly | 毎時最初の 1 分 |
/etc/cron.daily | 毎日午前 3 時 5 分から午後 10 時 55 分まで |
/etc/cron.weekly | 最後の実行から 7 日後の午前 3 時 25 分~午後 11 時 10 分の間 |
/etc/cron.monthly | 最後の実行から 1 か月後の午前 3 時 45 分~午後 11 時 30 分の間 |
– システム管理者が行う必要があるのは、シェル スクリプトまたは実行可能ファイルへのリンクをいずれかのディレクトリに配置することだけで、適切なタイミングで自動的に実行されます。
crontab 構文
ユーザーレベルの crontab の設定は多少異なります。 /var/spool/cron 内のファイルは直接編集されません。代わりに、crontab と呼ばれるプログラムを使用してそれらを操作します。 crontab コマンドの構文は次のとおりです:
Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u [user] define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n [host] set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x [mask] enable debugging
crontab の編集方法
crontab を編集する最良の方法は、コマンド crontab -e を使用することです。 .それを行う別の方法は次のとおりです:
1. su to the user whose cron you want to change 2. crontab -l > file [ copy the crontab to a file ]. 3. vi file [ make changes to the file as per your need ] 4. crontab file [ this makes the "file" as new crontab ]
この後、cron デーモンを再起動する必要はありません。
時間と日付フィールドの解釈
各 cron コマンドには 5 つの時刻と日付のフィールドがあり、その後にユーザー名 [オプション] が続きます。これがシステムの crontab ファイルの場合は、その後にコマンドが続きます。時間/日付フィールドで指定された時間が現在の時間と一致すると、コマンドが実行されます。
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 0-31 month 0-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
フィールドにはアスタリスク (*) を使用できます。これは常に 最初から最後まで を表します .したがって、月フィールドで使用する場合、0 (1 月) から 12 (12 月) までの毎月を意味します。
Cron ジョブの例:
# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | 0 1 * * * [user-name] [command to be executed]
cron ジョブの設定例
以下は、タスクのスケジュール方法を理解するための crontab の使用例です:
例: 毎日、真夜中の 5 分後にジョブを実行します:
5 0 * * * /home/oracle/scan_asm_devices.sh
例: 毎月 1 日の午後 5 時 30 分にジョブを実行する :
30 17 1 * * mail -s "It's 5:30pm"
例: 毎週月曜日の 4:05 にジョブを実行します。
5 4 * * mon echo "run at 5 after 4 every monday"
ユーザー アクセス制御
– ユーザーが crontab にアクセスできるようにするには、/etc/cron.allow および /etc/cron.deny ファイルを使用して、それぞれアクセスを許可または拒否します。単純に、2 つのファイルのいずれかに 1 つのユーザー名を入力して、crontab へのアクセスを許可または拒否します。
– /etc/cron.allow ファイルが存在する場合、/etc/cron.deny ファイルは使用されません。
– デフォルトのインストールでは、空のファイル /etc/cron.deny のみが存在します。
– どちらのファイルも存在しない場合、root ユーザーのみが cron を介してジョブをスケジュールするためのアクセス権を与えられます.