GNU/Linux >> Linux の 問題 >  >> Linux

cronを使用してタスクをスケジュールするためのLinuxのヒント

コンピュータでは、物事を定期的かつ予測可能なスケジュールで実行することが重要です。重要なのは、人間として、気が散ったり、頭がいっぱいだったり、休暇を取っているために、物事を確実に行うことを覚えておくのが苦手な場合があるからです。コンピューターはスケジュールどおりに物事を行うのが本当に得意ですが、人間はコンピューターが行動を起こす前にコンピューターをプログラムする必要があります。

ある意味で、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で最も難しいこと 私の経験では、その構文を覚えています。これを自分自身に繰り返し、メモリにコミットするまで繰り返します:

分、時間、日付、月、平日。

分、時間、日付、月、平日。

分、時間、日付、月、平日。

さらに良いことに、無料のチートシートをダウンロードして、最も必要なときにキーを手元に置いてください!


Linux
  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxで印刷するための3つのヒント

  3. GNUScreenを使用するためのLinuxのヒント

  1. Linuxコマンドラインに関する8つのヒント

  2. Linuxでの印刷にCUPSを使用するためのヒントとコツ

  3. LinuxでのCronを使用したシステムタスクのスケジューリング

  1. Linuxでの使い捨てcronジョブにatを使用する

  2. 信頼性の高いLinuxシステム自動化のための8つのヒント

  3. Cronを使用してLinuxVPSでタスクの自動化を設定するにはどうすればよいですか?