cronは、バックグラウンドプロセスまたはデーモンを随時(たとえば、分、日、週、月ごとに)管理するユーティリティです。 Cronはスケジューラーのように機能します。たとえば、インターネットからファイルをダウンロードしたり、定期的にメールをダウンロードしたりできます。また、更新のインストールなど、より複雑なタスクにも使用できます。もともとcronはKenThompsonによってUNIX用に作成されましたが、今ではLinuxを含むすべてのUNIXライクなシステムで使用できます。 UNIXには、「at」と呼ばれるタスクスケジューリング用の他のユーティリティがありますが、cronの方がはるかに優れています。 cronを使用する方法は2つあります。1つは、ターミナルを開いて次のコマンドを入力した場合に/etcにあるcronディレクトリを使用する方法です。$ls / etc /cron*次の出力が表示されます。
これで、画像に次のディレクトリが表示されます:cron。毎日、cron。毎時、cron.monthly、cron.weekly、およびcron.yearly。これらのディレクトリには、実行頻度である各ディレクトリの名前に応じて、cronが実行する必要のあるスクリプトが格納されます。たとえば、cron.hourlyに保存されているスクリプトは1時間ごとに実行されます。
次に、ディレクトリのバックアップを作成するための簡単なスクリプトを作成し、それをcronに配置します。 1時間ごとにスクリプトを実行する時間単位のディレクトリ。考慮しなければならない重要なことの1つは、スクリプトに実行権限を付与することです。これを行わないと、cronはファイルを実行しません。
グローバルcronディレクトリを使用してcronタスクにスクリプトを追加するプロセスの例:
ディレクトリがあり、1時間ごとに作成して自動的にバックアップしたい:
バックアップを作成するためのスクリプトを作成します。nanoを使用しましたが、お気に入りのエディターを使用できます:
スクリプトをテストします:
スクリプトを/etc/cron.hourlyにコピーします:
スクリプトに実行権限を付与します:
すべてのスクリプトは、使用するシェルを示しているため、行#!/ bin/shで始まる必要があります。 /etc/cron.*ディレクトリからcronを使用するのはあまり役に立たないので、crontabを使用する2番目の方法について説明します。
/ etc / cron *のコンテンツをリストしたときの出力を覚えている場合は、次のファイルが表示されます:/ etc / crontab
crontabファイルでタスクをスケジュールできますが、最初に次のことを学ぶ必要があります。
crontabファイルの内容を分析すると、「#run-parts」の後の行で7つのフィールドを識別できます。つまり、次のことを意味します(「#runparts」の後の最初の行):
Field1 | フィールド2 | Field3 | Field4 | Field5 | Field6 | Field7 |
01 | * | * | * | * | root | いい… |
最初の5つのフィールドは時間の値を示し、6番目のフィールドはユーザーを示し、7番目のフィールドは実行するコマンドを示します。この最後のフィールドはスクリプトまたはコマンド(uname、ls、apt-getなど)です。時間フィールドは次のとおりです。
分 | 時間 | 月の日 | 月 | 曜日 |
01 | * | * | * | * |
各フィールドで受け入れられる値は次のとおりです:
分 | 00 – 59 |
時間 | 00 – 23 |
月の日 | 1 – 31 |
月 | 1 – 12 |
曜日 | 1– 7(月曜日:1、日曜日:7) |
これらのフィールドのいずれかの値が「*」の場合、対応するフィールドのすべての可能な値を意味します。たとえば、* * * * * root /root/script.shこのタスクは、rootによって毎分、すべての日、およびすべての月。
Crontabは、特殊な文字列を使用して頻度の範囲を定義します:
@reboot | 起動後1回 |
@yearly | 年に1回 |
@annually | @yearlyと同じ |
@monthly | 月に1回 |
@weekly | 週に1回 |
@daily | 毎日 |
@midnight | @dailyと同じ |
@hourly | 毎時 |
特別な文字列の1つの時間フィールドを変更してから、残りを完了します(例:@annually root dist-upgrade)。このタスクは毎年自動的に実行する必要があります。
これで、crontabにタスクを追加できます。また、/ homeに.scriptsディレクトリを作成してスクリプトを保存し、最後に、crontabファイル内のすべてのスクリプトのエントリを追加できます。
Crontabは各ユーザーのタスクファイルを管理できます。次のコマンドを使用して、ユーザーがcrontabタスクを持っているかどうかをテストできます。
ファイルでタスクをスケジュールできます。作成するだけです:
crontabファイルを作成したら、次のコマンドを入力してcronにロードする必要があります:
$ crontab your_crontab
cronは非常に強力です。これは、新しいcrontabをロードした後は、何もする必要がないためです。つまり、cronは新しいタスクとcrontabファイルを自動的にロードします。私のcrontabの結果は、1分ごとに生成される日付を含むファイルを作成するスクリプトです。
スクリプト
生成されたファイルcrontabのその他のオプションは次のとおりです:
Cronは私が知っている中で最も強力なタスクスケジューラであり、Linuxだけでなく、すべてのUNIXライクなシステムに対応しているため優れています。サーバーを管理している場合は、おそらくcronを気に入るはずです。一般的なユーザーであっても、cronを気に入るはずです。cronを使用すると、すべてをスケジュールできます。 cronについて詳しく知りたい場合は、manページを参照してください。
$ man cron $ man crontab