システムジョブは多くの場合「丸い」時間に実行されるため、実行時間を少しずらすのが得策です。これは次のセクション4.4.4で説明します。例えば、ジョブは午前1時に実行されることが多いため(標準のlocateデータベースを更新するためのシステムインデックス作成など)、0100という時刻を入力すると、システムが起動するどころか、むしろ遅くなってしまう可能性があります。ジョブが同時に実行されるのを防ぐには、 バッチ このコマンドはプロセスをキューに入れ、キュー内の作業を均等にシステムに供給することで、システムリソースの過剰な消費を防ぎます。詳細については、情報ページをご覧ください。
4.4.4. クロンとクロンタブ
cronシステムは、 cron デーモン。システムとユーザーのcrontabエントリから、どのプログラムがいつ実行されるかに関する情報を取得します。システムのcrontabにアクセスできるのはrootユーザーのみで、各ユーザーは自分のcrontabにのみアクセスできます。システムによっては、(一部の)ユーザーがcron機能にアクセスできない場合があります。
システム起動時にcronデーモンは /var/spool/cron/ アカウント名にちなんで名付けられたcrontabエントリの場合 /etc/passwd、検索します /etc/cron.d/ そして検索する / etc / crontabは、この情報を毎分使用して、何か実行すべきことがあるかどうかを確認します。crontabファイルの所有者としてコマンドを実行し、コマンドの出力を所有者にメールで送信します。
Vixie cronを使用するシステムでは、時間ごと、日ごと、週ごと、月ごとに発生するジョブは、 の/ etc すべてのタスクが 1 つの大きなファイルに入力される標準の UNIX cron 機能とは対照的に、概要を維持します。
Vixie crontab ファイルの例:
[root@blob /etc]# crontabをもっと SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
ホーム=/
# 実行部分
1時間ごとに実行するコマンド
01 * * * * ルート実行部分 /etc/cron.hourly
毎日実行するコマンドの数
02 4 * * * ルート実行部分 /etc/cron.daily
毎週実行するコマンドの数
22 4 * * 0 root run-parts /etc/cron.weekly 毎月実行するコマンド
42 4 1 * * ルート実行部分 /etc/cron.monthly
[root@blob /etc]# crontabをもっと SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
ホーム=/
# 実行部分
1時間ごとに実行するコマンド
01 * * * * ルート実行部分 /etc/cron.hourly
毎日実行するコマンドの数
02 4 * * * ルート実行部分 /etc/cron.daily
毎週実行するコマンドの数
22 4 * * 0 root run-parts /etc/cron.weekly 毎月実行するコマンド
42 4 1 * * ルート実行部分 /etc/cron.monthly
Alternative
また、 crontab -l crontab を表示するコマンド。
いくつかの変数が設定され、その後に実際のスケジュールが続きます。ジョブごとに5行ずつ、0つの時間と日付のフィールドから始まり、最初のフィールドには分(59~0)、23番目のフィールドには実行時間(1~31)、1番目のフィールドには日(12~0)、そして月内の数字(7~0)、最後のフィールドには曜日(7~1、5と1,3,5はどちらも日曜日)が含まれます。これらのフィールド内のアスタリスクは、そのフィールドで許容される範囲全体を表します。リストも使用できます。月曜日から金曜日にジョブを実行するには、最後のフィールドにXNUMX~XNUMXを入力します。月曜日、水曜日、金曜日にジョブを実行するには、XNUMX、XNUMX、XNUMXを入力します。
次に、最後の列にリストされているプロセスを実行するユーザーを指定します。上記の例は、rootがプログラムを実行するVixieのcron設定です。 実行パーツ 適切なディレクトリをオプションとして指定することで、定期的に実行できます。これらのディレクトリには、スケジュールされた時間に実行される実際のジョブがシェルスクリプトとして保存されます。例えば、この小さなスクリプトは、毎日実行され、データベースを更新します。 locate コマンド:
[email protected]]$ 猫のslocate.cron
#!/ bin / shを
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
[email protected]]$ 猫のslocate.cron
#!/ bin / shを
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
ユーザーはcrontabを安全に編集するために、 crontab -e コマンドを実行します。これにより、ユーザーが誤ってcrontabファイルを複数開くことを防ぎます。デフォルトのエディタは vi (第6章を参照。ただし、任意のテキストエディタ( ギム or geditの GUI エディタの方が使いやすいと感じる場合。
終了すると、新しい crontab がインストールされたことがシステムから通知されます。
このcrontabエントリは ビリー 毎週木曜日の夜にスポーツクラブに行くこと。
ビリー:~> crontab -l
# このファイルを編集しないでください - マスターを編集して再インストールしてください。
# (/tmp/crontab.20264 は 20 年 22 月 35 日日曜日 14:2003:XNUMX にインストールされました)
ビリー:~> crontab -l
# このファイルを編集しないでください - マスターを編集して再インストールしてください。
# (/tmp/crontab.20264 は 20 年 22 月 35 日日曜日 14:2003:XNUMX にインストールされました)
# (Cron バージョン -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 メール -s「スポーツの夜」ビリー
# (Cron バージョン -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 メール -s「スポーツの夜」ビリー
新しいスケジュールタスクを追加すると、新しいcrontabがインストールされたことがシステムから通知されます。システムを再起動する必要はありません。 cron 変更を有効にするにはデーモンを起動する必要があります。例では、 ビリー バックアップ スクリプトを指す新しい行を追加しました:
ビリー:~> crontab -e
45 15 * * 3 メール -s「スポーツの夜」ビリー
4 4 * * 4,7 /home/billy/bin/backup.sh
<--書き込み終了-->
crontab: 新しいcrontabをインストールしています billy:~>
ビリー:~> crontab -e
45 15 * * 3 メール -s「スポーツの夜」ビリー
4 4 * * 4,7 /home/billy/bin/backup.sh
<--書き込み終了-->
crontab: 新しいcrontabをインストールしています billy:~>
AIマーケティング業界は、 backup.sh スクリプトは毎週木曜日と日曜日に実行されます。シェルスクリプトの概要については、セクション7.2.5を参照してください。コマンドの出力は、crontabファイルの所有者にメールで送信されることに注意してください。メールサービスが設定されていない場合は、コマンドの出力がローカルのメールボックスに届くことがあります。
/var/spool/mail/ 、プレーンテキスト ファイル。