Cron(クロン)とは|crontabの書き方・設定とLinux自動化の基本

Cron(crontab)の基本から書き方・設定手順、Linux自動化の実践例まで分かりやすく解説。初心者でもすぐ使える入門ガイド。

著者: Leandro Alegsa

cron(クロン)は、特定の日時や一定間隔でコマンドやスクリプトを自動実行するためのプログラムです。主にUNIX系のシステムや、LinuxのようなUNIXに似たOSで利用されます。繰り返し実行するバックアップやログのローテーション、定期的なデータ取得、メール受信処理など、さまざまな定期作業を自動化する目的で使われます。

名前の由来はギリシャ語で「時間」を意味する χρόνος(chronos、chronos)に由来します。

crontab(クーロンタブ)とは

crontabはcronで実行するジョブを定義するファイル(cron table)で、どのコマンドをいつ実行するかを記述します。ユーザーごとのcrontabとシステム全体の設定ファイル(例:/etc/crontab や /etc/cron.d/*)があります。ユーザー用のcrontabは通常コマンドで編集します。

crontabの基本書式

crontabの各行は基本的に次の形式です(ユーザー用crontabの場合、末尾にユーザー欄はありません):

分 時 日 月 曜日 コマンド

例:

30 2 * * * /usr/local/bin/backup.sh

→ 毎日 2:30 に /usr/local/bin/backup.sh を実行

フィールドの意味と書き方

  • (0-59)
  • (0-23)
  • (1-31)
  • (1-12)
  • 曜日(0-7、0 と 7 は日曜日)

指定方法:

  • ワイルドカード「*」:すべてを意味する
  • カンマ「,」:複数指定(例:1,15)
  • ハイフン「-」:範囲指定(例:9-17)
  • スラッシュ「/」:ステップ指定(例:*/5 は5分ごと)

便利な特殊文字列

  • @reboot:システム起動時に一度だけ実行
  • @daily(または @midnight):毎日(00:00)
  • @hourly:毎時
  • @weekly:毎週
  • @monthly:毎月
  • @yearly(または @annually):毎年

crontab の操作(よく使うコマンド)

  • crontab -e:現在のユーザーのcrontabを編集
  • crontab -l:crontabの表示
  • crontab -r:crontabの削除
  • システムwideの設定は /etc/crontab/etc/cron.d/ を編集(これらはユーザー欄があり、実行ユーザーを明記します)

実務での注意点とベストプラクティス

  • 絶対パスを使う:cronは通常シンプルな環境変数(特にPATH)が設定されるため、実行するコマンドやスクリプトは絶対パスで指定するか、スクリプト内でPATHを明示的に設定してください。
  • リダイレクトで出力を制御:標準出力・標準エラーはメール送信される場合があります。不要なら >/dev/null 2>&1 のようにリダイレクトしておきます。
  • 実行権限と所有者:スクリプトに実行権限(chmod +x)を付け、適切な所有者で実行されるようにする。
  • ログの確認:cronの実行ログはディストリや設定により /var/log/cron や syslog に記録されます。問題発生時はログを確認します。
  • 競合と重複実行:長時間実行するジョブはロック(flock 等)を使って同時実行を防止する。
  • タイムゾーン:サーバーのタイムゾーンに依存します。タイムゾーンをまたぐ運用では注意。

crontab の例(よくある記述)

# 毎日午前2時にバックアップ 0 2 * * * /usr/local/bin/backup.sh >/var/log/backup.log 2>&1  # 5分ごとにスクリプト実行 */5 * * * * /usr/local/bin/check_status.sh  # 起動時に一度だけ実行 @reboot /usr/local/bin/startup_task.sh

システムの cron サービスと代替手段

cron のデーモンはディストリにより名称が異なり(例:cron, crond)、サービス管理ツールで起動・停止・再起動できます。最近のLinuxでは systemd タイマー(systemd timers)を使う選択肢もあり、より細かい依存関係やランタイム管理が可能です。単純な定期実行はcron、複雑なサービス連携や精密な実行条件が必要な場合はsystemdタイマーを検討してください。

まとめ

Cronは単純で軽量な定期実行の仕組みとして長く使われており、正しく使うことで運用の自動化に非常に役立ちます。crontabの書式や環境の違い(PATH、ユーザー、ログなど)を理解し、フルパス指定・出力制御・ロック機構などのベストプラクティスを守ることで安全で確実な自動化が実現できます。

なお、cronを利用して行うタスクの例としては、定期的にインターネットからファイルをダウンロードしたり、特定の時間や日付に電子メールを処理する、といった用途が挙げられます。

質問と回答

Q: Cronとは何ですか?


A: Cronは特定の時間間隔でタスクをスケジュールするためのコンピュータプログラムです。

Q: Cronはどこで使われていますか?


A: CronはUNIXオペレーティングシステムや、LinuxのようなUNIXに似たオペレーティングシステムで使用されています。

Q: Cronはどのようなタスクをスケジューリングできますか?


A: ほとんどの繰り返しタスクはCronでスケジュール可能です。インターネットからファイルをダウンロードしたり、特定の時間や日付にメールをダウンロードするなど、他の多くのタスクにも使用できますが、コンピュータやコンピュータネットワークのメンテナンスや管理に関連するタスクを自動化するためによく使用されます。

Q: Cronの名前の由来は何ですか?


A: Cronはギリシャ語のχρόνος (chronos)から来ています。

Q: Cronはどのようにセットアップするのですか?


A: Cronはcrontab (cron table)と呼ばれるファイルを編集することでセットアップされます。このファイルには、コンピュータが実行する特定のタスクと、そのタスクを実行するタイミングが記載されています。

Q: crontabとは何ですか?


A: crontabとは、コンピュータが実行する特定のタスクと、そのタスクを実行するタイミングをリストアップしたファイルです。

Q: Cronはどのような反復タスクに使用できますか?


A: コンピュータやコンピュータネットワークのメンテナンスや管理に関連するほとんどの反復タスクはCronで自動化できます。また、インターネットからファイルをダウンロードしたり、特定の時間や日付にメールをダウンロードするようなタスクにも使用できます。


百科事典を検索する
AlegsaOnline.com - 2020 / 2025 - License CC3