コンピュータでは、物事を定期的かつ予測可能なスケジュールで実行することが重要です。重要なのは、人間として、気が散ったり、頭がいっぱいだったり、休暇を取っているために、物事を確実に行うことを覚えておくのが苦手な場合があるからです。コンピューターはスケジュールどおりに物事を行うのが本当に得意ですが、人間はコンピューターが行動を起こす前にコンピューターをプログラムする必要があります。
ある意味で、cron
システムは、プログラミングの簡単で初歩的な入門書です。ファイルを編集するだけで、コンピュータにやりたいことをさせることができます。ファイルがどこに保存されているかを知る必要さえありません。簡単なコマンドを入力し、コンピューターが従う「レシピ」を入力して、作業内容を保存するだけです。それ以降、コンピュータは、停止するように指示されるまで、指定された時間に命令を実行します。
設計上、cron
複雑なシステムではありません。知っておくべきことは次のとおりです。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
cronとは何ですか?
cron
コマンドはLinuxとUnixで非常に普及しており、頻繁に模倣および再発明されているため、スケジュールに従って発生する何かのほぼ一般的な用語です。 。これは自動化の一形態であり、さまざまな実装(Dillonのcron、Vixieのcron、chronyなど)や、anacron
などのバリエーションがあります。 とsystemdタイマー、構文とワークフローは何十年も基本的に同じままです。
Cronは、プリンタや電子メールと同じように、「スプール」システムで動作します。プリンタと電子メールがスプールを使用していることを知らなかった場合、スプールファイルのポイントは、それについてあまり考える必要がないということなので、問題ありません。 Linuxシステムでは、ディレクトリ/var/spool
は、ユーザーが直接操作することを意図していない、重要であるが低レベルのファイルの中央ハブとして設計されています。 /var/spool
で管理されているスプールの1つ cron
です テーブルまたは略して「crontab」。 Linuxシステム上のすべてのユーザー(自分自身を含む)にはcrontabがあります。ユーザーは、自分のcrontabを編集、表示、および削除できます。さらに、ユーザーはcrontabを使用してタスクをスケジュールできます。 cron
システム自体がcrontabを監視し、crontabにリストされているすべてのジョブが指定された時間に実行されるようにします。
cron設定の編集
crontab
を使用してcrontabを編集できます -e
と一緒にコマンド (編集の場合 ) オプション。デフォルトでは、ほとんどのシステムはvim
を呼び出します テキストエディタ。私のようにVimを使用しない場合は、~/.bashrc
で別のエディターを設定できます。 ファイル。私はEmacsに設定しましたが、Nano、Kate、またはお気に入りのエディターを試してみることもできます。 編集者 環境変数は、ターミナルで使用するテキストエディタを定義し、 VISUAL 変数は、グラフィカルモードで使用するエディターを定義します:
export EDITOR=nano
export VISUAL=kate
新しい設定でシェルセッションを更新します:
$ source ~/.bashrc
これで、好みのエディターでcrontabを編集できます:
$ crontab -e
タスクをスケジュールする
cron
システムは本質的に予定表システムです。 cron
に伝えることができます 分、時間、日付、月、平日の5つの異なる属性を使用して、ジョブを実行する頻度。これらの属性の順序は厳密であり、必ずしも直感的ではありませんが、フィルターまたはマスクと考えることができます。デフォルトでは、すべてが常にに設定されていると考えるかもしれません。 またはすべて 。このエントリはtouch /tmp/hello
を実行します 一年中毎日の毎時の毎分の上部に:
* * * * * touch /tmp/hello
各属性に特定の定義を設定することにより、この包括的なスケジュールを制限できます。各時間の30分マークでジョブを実行するには、分を 30に設定します :
30 * * * * touch /tmp/hello
この命令を特定の時間にさらに制限することができます。このジョブは毎朝午前3時30分に実行されます:
30 3 * * * touch /tmp/hello
毎月1日にのみジョブを実行することもできます:
30 3 1 * * touch /tmp/hello
1月の1から12月の12までの月を設定でき、日曜日の0から土曜日の6までの日を設定できます。このジョブは、4月の3:15に実行され、月曜日のみです:
15 3 * 4 1 touch /tmp/hello
増分を設定
これらの設定はすべて、正確に値と一致します 。 cron
を使用することもできます 一定の時間が経過した後にジョブを実行するための表記。たとえば、15分ごとにジョブを実行できます。
*/15 * * * * touch /tmp/hello
3日ごとに午前10時にジョブを実行できます:
* 10 */3 * * touch /tmp/hello
6時間ごとにジョブを実行できます:
* */6 * * * touch /tmp/hello
cronの省略形
最新のcron
実装により、一般的なスケジュールの便利な省略形が追加されました。これらは次のとおりです。
-
@hourly
-
@daily
-
@weekly
-
@monthly
@yearly or @annually
cronジョブの一覧表示
crontab
を使用する コマンドを実行すると、スケジュールされたcron
のリストが表示されます。 仕事:
$ crontab -l
15 3 * 4 1 touch /tmp/hello
crontabを削除する
crontabを使い終わったら、-r
を使用して削除できます。 オプション:
$ crontab -r -i
-i
オプションはインタラクティブの略です 。ファイルを削除する前に確認を求めるプロンプトが表示されます。
cronでできること
cron
、しかしそれを何に使うべきかを知ることは別のことです。従来のユースケースは、優れたバックアップ計画です。コンピュータの電源が1日中、または1日中、一晩中オンになっている場合は、重要なパーティションの定期的なバックアップをスケジュールできます。 rdiff-backup
というバックアップアプリケーションを実行しています 毎日午前3時にプライマリデータパーティションで:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
もう1つの一般的な用途は、システムのメンテナンスです。 Slackwareデスクトップで、毎週金曜日の午後にローカルリポジトリカタログを更新します:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
3日ごとに15:00にAnsibleスクリプトを実行して、ダウンロードフォルダーを整理することもできます。
$ crontab -l | grep ansible
* 15 */3 * * ansible-playbook /home/seth/Ansible/cleanup.yaml
コンピューティング環境の健全性への少しの投資は大いに役立ちます。重複排除スクリプト、ファイルサイズ、/tmp
があります ディレクトリモニター、写真のサイズ変更、ファイルムーバー、およびシステムを整理するためにバックグラウンドで実行するようにスケジュールできるその他の多くの面倒なタスク。 cron
を使用 、あなたのコンピュータは、私が私の物理的なアパートに望む方法でそれ自体を処理することができます。
cron設定を覚えておいてください
理由を考え出すことに加えて cron
が必要です 、cron
で最も難しいこと 私の経験では、その構文を覚えています。これを自分自身に繰り返し、メモリにコミットするまで繰り返します:
分、時間、日付、月、平日。
分、時間、日付、月、平日。
分、時間、日付、月、平日。
さらに良いことに、無料のチートシートをダウンロードして、最も必要なときにキーを手元に置いてください!