毎日、毎週、または毎月、同じタスクを何度も実行することは、その複雑さに応じて、時間の経過とともに疲れて退化するタスクであり、それを脇に置きます. この問題の解決策は、可能な限り自動化することです。 と同じように Windows 特定のタスクの自動化を可能にし、 Linux も Crontab を介してこのオプションを提供していますが、排他的ではありません。
バックアップ コピーの作成、レポートの生成、構成の変更など、Linux の操作を自動化したい場合、Crontab を Cron と組み合わせて使用することが解決策となります。アプリケーション最小。
クロンタブとは?
Crontab は、一連のパラメーターに基づいて自動化が作成されるテキスト ファイルです。 クロンが読む . どちらのアプリケーションも、最も一般的な Linux ディストリビューションのほとんどでネイティブに利用できるため、それらを使用するためにコンピューターにリポジトリをインストールする必要はありません。
Crontab は一連のスクリプトを XNUMX 行に XNUMX つずつ提供し、必要な正確な時間をカスタマイズできるようにします XNUMX つまたは複数のタスクを実行する そしてそれらの繰り返し。 実際、その名前はギリシャ語に由来しています クロノス 、つまり時間を意味します。 各スクリプトには、実行する必要がある正確な日付に関する情報が含まれており、日付は一連の数字で示されます。 サンプルはボタン。 次のスクリプトは、毎週日曜日の午前 5 時 30 分に nfsfind を実行します。
30 5 * * 0 /usr/lib/fs/nfs/nfsfind
最初の 24 つの数字はコマンドが実行される時間を表し、最初の数字は分、5 番目の数字は時間を表します。 Crontab で使用される時間形式は 17 時間であるため、午後 0 時にタスクを実行する場合、これは数値 XNUMX になります。アスタリスクはすべての値を表し、数値 XNUMX は日曜日に対応します。
Cron と Crontab を混同しないでください
Crontab を使用すると、システムの 自動化 、これらは排他的ではありませんが、バックグラウンドで実行され、Crontab で以前に構成したすべてのタスクを実行するアプリケーションである Cron アプリケーションで実行されます。 このアプリケーションはシステム時間を使用してそれらを実行するため、仮想マシンを使用する場合、ゲスト マシンの時間とコンピューターの時間の両方が常に同じであることが重要です。正しい。
Cron は毎分 Crontab ファイルのコンテンツを読み取るため、実行する新しいスクリプトを見つけるためにアプリケーションにそのコンテンツを再度読み取らせることなく、同じセッションで実行したいタスクを実行するためにいつでも編集できます。
すべてのユーザーが Crontab ファイルを作成してシステム タスクを自動化できるわけではありません。 システム管理者は、使用している Linux ディストリビューションのバージョンに応じて、/etc/cron.do /etc/ にあるファイル cron.allow または cron.den を使用して、このオプションを許可または拒否することができます。 私たちのコンピュータにインストールされています。
Linux でタスクを自動化する方法
上で述べたように、Crontab スクリプトは実行したい日付で始まり、その後にコマンドが続きます。 Crontab の構文は次のとおりです。
スケジュール管理
minuto hora día-del-mes mes día-de-la-semana ruta-comandos
- 分、これは 0 から 59 までです
- 時間については、前述したように、Crontab は 24 時間制を使用するため、数値の範囲は 0 から 23 です。
- 日付は、1 から 31 まで変化するため、このパラメーターにはあまり謎はありません。
- 月、1 ~ 12
- 1年XNUMX月
- 2月2
- 3月XNUMX日 XNUMX:XNUMX
- April 4
- 5年XNUMX月
- 6年六月
- 7 年XNUMX月
- 8月XNUMX日
- September 9
- October 10
- November 11
- 12月12。
- 0 から 6 までの曜日。日曜日が 0 ですが、Crontab の一部のバージョンでは 7 も使用できます。 このように、曜日のコードは
- 0日曜日
- 1月曜日
- 2火曜日
- 3水曜日
- 4木曜日
- 5の金曜日
- 6土曜日
さらに、アスタリスク (*) を使用して、変数のすべての可能な値を指定することもできます。 複数の値を確立したい場合は、コンマ (,) またはハイフン (-) で区切った値の範囲を使用してそれを行うことができます。 「/」で異なるステップを設定することもできます。
それでも明確でない場合は、周期性に応じて定期的にタスクを実行するために使用できるタイム コードを示します。
- 0 * * * * タイムコードを使用して、毎正時にスクリプトが実行されます。
- 0 0 * * * スクリプトは毎日 XNUMX 回だけ実行されます
- 0 0 * * 0 スクリプトは週に XNUMX 回実行されます
- 0 0 1 * * 月に XNUMX 回実行されます
- 0 0 1 1 * スクリプトは年に XNUMX 回実行されます
Crontab でタスク スケジューリングがどのように機能するかを明確にしたら、次のコマンドを使用して、自動化するすべてのプロセスを作成するファイルを作成します。
crontab nombre-archivo
新しいものを作成したくない場合、または既に作成していて編集したい場合は、このコマンドを使用します
crontab -e
作成したCrontabファイルを削除したい場合
crontab -d
次のコマンドを使用すると、Crontab ファイルに含まれるすべてのタスクを一覧表示できます。
crontab -d
システム管理者は、以前に場所を変更していない場合、cron.allow または cron.den ファイル、/etc/cron.d/ または /etc/ にあるファイルを編集することにより、システム自動化の使用を制限できます。
タスクを自動化する
作成した Crontab ファイルを編集するには、すべての Linux ディストリビューションに含まれているテキスト エディターを使用しますが、-e 変数を追加して Crontab から直接編集することもできます。
nano nombrearchivo
アスタリスクが付いた数値コードと実行したいスクリプトを紹介します。 次に、Cron にそれを実行する権限を与える必要があります。そうしないと、Cron はその存在を認識できず、実行できなくなります。 これを行うには、コマンドを使用します
chmod ugo+x nombrearchivo
最初は、Crontab を使用してタスクを自動化することはまったく簡単ではないように思われ、実質的にすべてのコマンド ラインに頼らなければならない Linux (ほとんど一般的) の必要性を思い起こさせます。今日ベース。 .
Windows タスク スケジューラは、必要な知識がないと使いにくいグラフィカル インターフェイスを使用しますが、Linux がコマンド ラインから提供するものよりもはるかに直感的です。
Crontab と Cron の動作例
Linux でタスクを自動化するために最初に行う必要があるのは、構成時にコンピューターで実行するすべてのコマンドを含めるファイルを作成することです。 この例では、tmp ディレクトリにあるすべてのファイルと空のフォルダーを削除する「テスト」ファイルを作成します。 そのために、次のコマンドを入力します。
crontab prueba
次に、コマンド (またはコマンドをセミコロン「;」で区切り、引用符なし) を入力する必要があります。 この例では、Crontab を使用して tmp フォルダー内のファイルを削除します。
find /tmp -type f -empty -delete
次に、ファイルを編集してスケジュールを追加します。つまり、ファイルに入力したタスクをいつ実行するかです。
crontab -e
毎日午前 10 時に実行されるようにするには、スクリプトの前に 0 10 * * * を追加し、次のように行を残す必要があります。
0 10 * * * find /tmp -type f -empty -delete
別の時間に実行したい場合は、実行したい時間 (10 時間形式) の 24 を変更するだけです。 また、 タイムコード プログラミング管理セクションで示したように構成します。 最後に、作成した自動化ファイルを Cron が実行できるように、次のコマンドを使用します。
[code]chmod ugo+x prueba
Cronの代替
前のセクションで述べたように、Cron は、以前に Crontab に入力したコマンドの実行を担当しています。 Cron は 24 日 XNUMX 時間稼働しているチームに最適なツールですが、タスクの実行中にチームからリソースが奪われても、作業スケジュールに適応させることもできます。 Cron のよりシンプルなオプションを探している場合は、最良の代替手段をいくつか紹介します。
anacron
Anacron を使用すると、いつでも、XNUMX 日、XNUMX 週間、または XNUMX か月単位でタスクの自動実行をスケジュールできます。 コンピューターの電源がオフになっている場合、次回コンピューターを起動すると、以前に Crontab に入力したタスクが実行されます。 Cron では、指定された日付にコンピューターの電源がオフになっていると、コンピューターの電源をオンにしてもタスクは実行されません。 Anacron はほとんどの Linux ディストリビューションで利用でき、次のコマンドを使用してコンピューターにインストールできます。
sudo apt install anacron
クローニー
Cronie は、Cron よりもはるかに完全なエクスペリエンスを提供し、アプリケーションの小さなセット (Anacron が含まれています) を提供し、Crontab を介してワークフローを非常に迅速かつ簡単にプログラムできます。 Anacron とは異なり、Cronie をインストールするには、Linux リポジトリでは利用できないため、次の Web ページにアクセスする必要があります。 GitHubの ダウンロードするには、次のコマンドを使用します。
wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz