Cron は、Unix 系オペレーティング システムに含まれる時間ベースのジョブ スケジューリング サービスです。ユーザーは、固定の時刻、日付、または間隔で定期的に実行されるようにジョブ (コマンドまたはスクリプト) をスケジュールします。
Cron の起源と初期の歴史
cron の最初の実装は、バージョン 7 Unix に遡ります。 「クロン」という用語は、ギリシャ語で時間を意味する「クロノス」に由来しています。 1979 年にリリースされたこのバージョンの Unix には、指定された間隔でタスクを実行する単純な cron プログラムがありました。 Cron の機能は、その後 1987 年に Paul Vixie によって拡張されました。Vixie Cron として知られるこのバージョンは、現在最も一般的にインストールされているバージョンであり、人々が「Cron」について言及するときに一般に参照されるバージョンです。
Cron の概念の拡張
Cron を使用すると、ユーザーはシステムのメンテナンスや管理を自動化できますが、その汎用性により、インターネットからのファイルのダウンロードや定期的な電子メールのダウンロードなどに役立ちます。 cron 環境は、cron ジョブが通常のシェル環境から実行されるサンドボックスのようなものです。
各ユーザーは独自の crontab を持つことができ、これらは /var/spool/ 内のファイルですが、直接編集することを目的としていません。 cron 式の構文は、Unix cron 構文と、cron 式構文または Quartz cron 構文として知られるより複雑な構文の 2 つの主なタイプの構文に分類できます。
Cron の内部構造とその仕組み
Cron は、「crontab」ファイルとして知られるシンプルかつ強力な構成ファイルに基づいて動作します。このファイルには、実行するタスクごとに 1 行が含まれており、5 つの時刻と日付のフィールドで構成され、その後に指定した時間に実行するコマンドが続きます。
5 つのフィールドは次を表します。
- 正時後の分 (0 ~ 59)
- 1 日の時間 (0 ~ 23)
- 月の日数 (1 ~ 31)
- 1 年の月数 (1 ~ 12)
- 曜日 (0 ~ 7、0 と 7 は日曜日)
コマンド フィールドには、最初の 5 つのフィールドで指定された時間に実行されるタスクが含まれます。
Cron の主な機能
Cron の主な機能は次のとおりです。
- これにより、タスクをバックグラウンドで定期的に自動的に実行できます。
- さまざまな時間単位でタスク (スクリプトまたはコマンド) をスケジュールするための柔軟なプラットフォームを提供します。
- 各ユーザーは独自の crontab ファイルを持つことができます。
- Cron ジョブは、分、時間、曜日、日、月ごとに実行するようにスケジュールできます。
- Cron は、さまざまなシステム タスクを自動化するためのシンプルかつ効果的な方法を提供します。
クロンの種類
Cron ジョブは一般に次のように分類できます。
タイプ | 説明 |
---|---|
リブート | 起動時に 1 回実行されます。 |
アナクロン | 日単位で指定された間隔で実行されます。 |
システムクロン | これらは /etc/crontab および /etc/cron.d/ ディレクトリに保存され、システム全体に適用されることを目的としています。 |
ユーザー Cron | 各ユーザーは独自のものを持つことができ、/var/spool/cron/crontabs/ に保存されます。 |
Cron の使用法、問題、およびその解決策
Cron はタスクを自動化するのに便利ですが、慎重に使用しないと問題が発生する可能性があります。たとえば、cron ジョブの構成が間違っていると、CPU 使用率が高くなる可能性があります。また、cron は、ジョブの出力があれば、ジョブを実行するユーザーにのみ電子メールを送信します。定期的にチェックしないと、エラーが見逃される可能性があります。
これらの問題に対する一般的な解決策は次のとおりです。
- 定期的に CPU 使用率が高いかどうかをチェックし、不要なジョブを再構成または停止します。
- cron ジョブとして設定する前に、すべてのコマンドとスクリプトが正しく実行されることを確認します。
- 出力をログファイルにリダイレクトするか、メール サーバーを設定して、cron ジョブをより効果的に監視します。
類似ツールとの比較
cron に似たタスク スケジューラには、anacron や systemd タイマーなどがあります。これらの主な違いは、次のようにまとめることができます。
道具 | 説明 |
---|---|
クロン | 一日の特定の時間に実行されるタスクに適しています。実行されなかったジョブは実行されません。 |
アナクロン | 毎日/毎週/毎月 1 回実行されるタスクに適しています。マシンがオンラインに戻ったときに、実行されなかったジョブが実行されます。 |
システムド | より多くのオプションを提供し、最新の Linux ディストリビューションとうまく統合できるため、より複雑なシナリオに適しています。 |
将来展望と関連技術
Unix ベースのシステムが進化し続けるにつれて、Cron も進化します。systemd のようなより高度なタスク スケジューラが登場したにもかかわらず、Cron はシンプルさとパワーにより、今日でも広く使用されています。
コンテナ化されたアプリケーションとマイクロサービス アーキテクチャへの最近の傾向も、Cron の新しい使用方法をもたらしています。たとえば、人気のあるコンテナ オーケストレーション プラットフォームである Kubernetes には、Unix ベースのシステムの Cron に似た CronJobs として知られる機能があります。
プロキシサーバーとCron
プロキシ サーバーを Cron と組み合わせて効果的に使用すると、特定のタスクを自動化できます。たとえば、プロキシ サーバー経由で Web サイトまたは API に定期的にアクセスする必要があるスクリプトがある場合、指定した間隔でそのスクリプトを実行する cron ジョブを設定できます。
Cron を使用すると、プロキシを指定した間隔でローテーションして、単一のプロキシがブロックされる可能性を減らすこともできます。たとえば、OneProxy のプロキシ サービスは、データ スクレイピング、ソーシャル メディア タスクの自動化などのタスクを Cron で自動化できます。
関連リンク
Cron の詳細については、次のリソースを参照してください。