ウェブサイト検索

Linux cron コマンドを使用したタスクのスケジュール設定


Linux コマンド ラインから直接、難しいスケジュールの問題を克服するには、この方法を試してください。

Linux を使い始めた初期の頃、私はオペレーティング システムの多数のコマンド ライン ユーティリティと、それらが通常のタスクを合理化する方法を理解するようになりました。たとえば、Windows サーバー上のアプリケーションをバックアップするには、高価なアドオン ソフトウェア パッケージが必要になることがよくありました。対照的に、tar コマンドを使用すると、Linux のバックアップが比較的簡単になり、強力で信頼性も高くなります。

しかし、学区の電子メール システムをバックアップする場合、別の課題に直面しました。人々がシステムを使用しているため、バックアップは平日や夕方には実行できませんでした。バックアップは真夜中以降に実行する必要があり、信頼できるものである必要がありました。 Windows のタスク マネージャーには慣れていましたが、Linux では何を使用するのでしょうか?そこでcronのことを知りました。

Linux で cron を使用してタスクをスケジュールする

Cron は、スケジュールされたコマンドを自動的に実行するために使用されるデーモンです。 cron の使い方を学ぶには多少の本を読んで実験する必要がありましたが、すぐに cron を使用して電子メール サーバーをシャットダウンし、データを圧縮 tar ファイルにバックアップし、午前 3 時に電子メール サービスを再起動するようになりました。

cron ジョブのコマンドは、Linux システム上の crontab ファイルに保存されます。通常、このファイルは /etc/crontab にあります。 $crontab -l を使用して、crontab ファイルの内容を表示します。

$crontab -e を使用して crontab ファイルを編集します。

一部のシステムでは、cron 編集用に Vi エディターがデフォルトで使用されます。環境変数を使用してこの設定をオーバーライドできます。

$ EDITOR=nano crontab -e

これにより、nano エディタを使用して個人用 crontab を編集できるようになります (まだ持っていない場合は、自動的に作成されます)。

整数値を挿入するまで、すべての crontab コマンドにはアスタリスクで示されるパラメータがあります。最初は分を表し、次に時間、日、月、最後に曜日を表します。

コメントの前にはハッシュが付きます。 Cron はコメントを無視するため、コメントはコマンドの動作とその重要性について自分にメモを残すのに最適な方法です。

cron ジョブのサンプル

毎週月曜日の午前 10 時に、clamscan を使用してホーム ディレクトリのウイルスやマルウェアをスキャンするとします。また、毎週火曜日の午前 9 時にホーム ディレクトリをバックアップするとします。 cron および crontab ファイルを使用すると、これらのユーティリティを実行することを覚えているかどうかに関係なく、システム メンテナンスが毎週確実に行われます。

「don」(私のユーザー名)の代わりに自分のユーザー名を使用して、crontab ファイルを編集して次の内容を含めます。

# Scan my home directory for viruses
0 10 * * 1 clamscan -ir /home/don
# Backup my home directory
0 9 * * 2 tar -zcf /var/backups/home.tgz /home/don

nano エディタを使用している場合は、Ctrl+O でファイルを書き出し、Ctrl+X でエディタを終了して作業内容を保存します。ファイルを編集した後、crontab -l を使用して cron ファイルの内容を一覧表示し、ファイルが適切に保存されていることを確認します。

システムで必要なあらゆるジョブの crontab ジョブを作成できます。これは cron デーモンを最大限に活用します。

Linuxコマンドラインからのスケジュール設定

cron の最も難しい部分は、先頭のアスタリスクに適切な値を見つけることであることは周知の事実です。 crontab.guru のような、cron 時間を人間が読める翻訳に動的に変換する Web サイトがあり、Opensource.com には、cron を正しく保つためにダウンロードできる cron チートシートがあります。

さらに、最新の cron システムのほとんどは、次のような一般的な値へのショートカットを備えています。

  • @hourly : 1 時間に 1 回実行 (0 * * * *)
  • @daily : 1 日に 1 回実行 (0 0 * * *)
  • @weekly : 週に 1 回実行 (0 0 * * 0)
  • @monthly : 月に 1 回実行 (0 0 1 * *)
  • @reboot : 再起動後に 1 回実行します

cron の代替手段もあります。たとえば、特定のスケジュールに従っていないが定期的に実行したいジョブ用の anacron や、1 回限りのジョブ用の at コマンドなどです。

Cron は便利なタスク スケジュール システムで、テキストを編集するのと同じくらい簡単に使用できます。試してみる!

関連記事: