Sat, May 9 昼版 日本語
アスアハイグルオブアルトーキョー アスアハイグルオブアルトーキョー 朝のレポート
更新 13:41 16 本日の記事
テック ビジネス ブログ ローカル ワールド 政治

Linux Cron Job とは – Crontabの使い方と構文完全ガイド

Shota Ren Nakamura Sato • 2026-03-29 • 監修 佐藤 遥

サーバー運用や開発現場で、決まった時間に処理を自動化したい場面は少なくない。ログのローテーション、バックアップの取得、メンテナンススクリプトの実行など、人手に頼らず繰り返し行う作業を担うのが、cron jobである。

Linux環境において、cronは時限式ジョブスケジューラとして標準的に実装されているデーモンだ。バックグラウンドで常駐し、ユーザーやシステムが指定した時刻にコマンドやスクリプトを自動実行する仕組みを提供する。crontabコマンドを通じて設定を行い、分・時・日・月・曜日の5つの時間単位で実行タイミングを制御できる。

本稿では、cronの基本概念から、設定ファイルの編集方法、構文の詳細、そしてプラットフォーム固有の実装までを解説する。

Cron Jobとは?

定義: 時間ベースのタスクスケジューラ
用途: 自動バックグラウンド実行
コマンド: crontab -e
書式例: * * * * * command
  • CronはLinuxおよびUnix系OSの標準ツールとして普及している
  • 分単位から年単位まで、極めて柔軟なスケジュール設定が可能だ
  • サーバーメンテナンスや定時処理の自動化に最適な仕組みを持つ
  • ユーザーごとに独立した設定ファイル(crontab)を持つ
  • システム全体の設定はroot権限で管理される
  • ログ出力による実行状況の追跡が可能だ
  • 環境変数の差異に注意が必要な特殊な実行コンテキストを持つ
項目 詳細
開発元 Brian Fox (1987年)
デーモン名 cron
設定ファイル(システム) /etc/crontab, /etc/cron.d/
設定ファイル(ユーザー) /var/spool/cron/ユーザー名
編集コマンド crontab -e
ログファイル /var/log/cron または /var/log/syslog
最小実行間隔 1分
特殊文字列 @daily, @hourly, @weekly, @monthly, @reboot, @yearly

Crontabの使い方

基本操作とオプション

crontabコマンドは、ユーザーごとのcron設定を管理するための専用インターフェースだ。主なオプションには、-e(編集)、-l(表示)、-r(削除)、-i(削除確認付き)がある。rootユーザーであれば-u ユーザー名を指定して他ユーザーの設定も操作できる。

設定の流れはシンプルだ。ターミナルでcrontab -eを実行すると、デフォルトのテキストエディタ(通常viやvim)が開く。初回実行時には、使用するエディタの選択を求められる場合がある。

エディタでの編集手順

viエディタを使用する場合の手順は特定のキー操作に従う。iキーで挿入モードに移行し、設定行を入力する。完了後、Escキーでコマンドモードに戻り、:wqと入力して保存・終了する。変更内容は即座に反映され、cronデーモンが新しいスケジュールを読み込む。

絶対パスの使用が推奨される理由

cron環境では、対話的シェルと異なりPATH環境変数が制限される。コマンドやスクリプトを絶対パス(例: /usr/bin/backup.sh)で指定しないと、実行時に「コマンドが見つからない」エラーとなるリスクがある。

Cronの構文(syntax)

5フィールドの書式ルール

cronエントリは、時刻指定部とコマンド部からなる。時刻指定は左から「分(0-59)」「時(0-23)」「日(1-31)」「月(1-12)」「曜日(0-7、0と7は日曜)」の5フィールドで構成される。アスタリスク(*)は「すべて」を意味し、*/nの構文で「nおき」の間隔指定も可能だ。

特殊文字列と実行例

特殊文字列を用いると、より直感的な記述ができる。@dailyは毎日0時0分、@hourlyは毎時0分、@rebootはシステム起動時に実行を意味する。

具体的な記述例を示す。毎日0時にバックアップを実行する場合は0 0 * * * /path/to/backup.shとなる。1分ごとに実行したい場合は* * * * *または*/1 * * * *を使用する。15分ごとの実行では*/15と指定し、出力のリダイレクトも併記可能だ。

最小間隔の制限

標準的なcronの最小実行間隔は1分である。それより短い間隔(秒単位)での実行を実現する場合は、スクリプト側でループ処理を実装するか、より高度なスケジューラの利用を検討する必要がある。

Cron Job Vercelとの違い

VercelのCron Jobs機能については、Linuxネイティブのcronとは実装が異なる。Vercelはサーバーレスプラットフォームであり、vercel.jsonやダッシュボード設定に基づく独立したCron Jobs機能を提供している。これはLinuxのcronデーモンとは別の仕組みであり、GitHubリポジトリでcrons配列を定義する方式を採用している。本稿の記述はLinuxサーバー環境のcronに限定される。

プラットフォーム境界の明確化

オンプレミスや通常のVPS環境ではLinuxのcronが使用されるが、Vercelや類似のサーバーレス環境ではベンダー固有の実装に依存する。設定方法や環境変数の扱い、ログの確認手順はプラットフォームごとに異なるため、ドキュメントの区別が重要だ。

Cron設定から運用までの流れ

  1. : cronデーモンの稼働確認(systemctl status cronまたはps aux | grep cron
  2. : crontab -eの実行と、エディタ選択(初回のみ)
  3. : 5フィールドによる実行タイミングの記述とコマンドの設定
  4. : crontab -lによる設定内容の確認
  5. : 自動実行開始と/var/log/cronまたはgrep CRON /var/log/syslogによるログ監視

確立した仕様と留意点

確立されている情報

  • 5フィールド構文(分・時・日・月・曜日)はPOSIX準拠の標準仕様
  • crontab -eによる設定の即時反映
  • 最小実行間隔は1分(更广い間隔も自由に設定可能)
  • 環境変数HOME、LOGNAME、USERの自動設定

環境による変動/不確実性

  • Vercel等のサーバーレス環境ではLinux cronとは異なる実装
  • デフォルトエディタの選択はOS初期設定に依存
  • PATH環境変数の値はシステム設定により異なる
  • ログファイルのパスはディストリビューションによって変動(/var/log/cronまたは/var/log/syslog等)

Linux環境における役割と文脈

cronは新聞紙 – 意味・用法・歴史を詳しく解説のような情報記録の自動化においても、その技術的基盤として機能する。システム管理において、cronは無人運用を可能にする中核的インフラストラクチャである。定期的なログローテーションによりディスク容量を管理し、セキュリティスキャンを定時実行し、統計データを収集する。これらの定常処理を人力から解放することで、管理者はより高度なタスクに集中できる。

現代のLinuxディストリビューションでは、従来のcronに代わりNewspaper – 新聞紙の意味と明治規制の歴史のような歴史的変遷を経て、systemd.timerという新たなスケジューリング機構も普及している。systemdは依存関係の管理やモノトニック時計による起動制御といった点で機能が豊富だが、cronはそのシンプルさと軽量性から、未だに広く使用され続けている。単純な時刻指定で十分な場面では、cronが最も効率的な選択肢となっている。

情報源と引用

Cron is a time-based job scheduler.

— Wikipedia

詳細な構文や実装の仕様についてはman cron(8)およびman crontab(5)の各マニュアルページが一次情報源となる。ユーザー制限に関する記述も公式ドキュメントに準拠している。

まとめ

Linuxのcron jobは、時限式のタスクスケジューラとして、システム運用の自動化に不可欠な機能を提供する。crontab -eによる直感的な設定編集と、5フィールドによる柔軟なスケジューリング構文を特徴とし、バックグラウンドでの安定した実行を保証する。絶対パスの使用や環境変数の管理といった基本的な注意点を押さえることで、信頼性の高い自動化インフラを構築できる。サーバーレスプラットフォームでの実装とは区分しつつ、標準的なLinux環境における定常処理の効率化に活用すべきツールである。

よくある質問

cronとatコマンドの違いは何か?

cronは定期的な繰り返し実行を、atは一度だけの予約実行を行う。cronは毎日や毎週といったスケジュール登録に、atは特定の日時にのみ実行したい場合に使用される。

crontabの設定が保存できない場合の対処法は?

ファイルの書き込み権限やディスク容量を確認する。また、エディタの終了コマンド(viの場合:q!は保存しない終了、:wqは保存して終了)を間違っていないか確認する。

設定したジョブが実行されない原因は?

コマンドパスが相対指定になっていないか、cronデーモンが停止していないか、環境変数の違いでスクリプトがエラーを起こしていないかを/var/log/cronなどのログで確認する。

特定ユーザーにcron使用を禁止するには?

/etc/cron.denyファイルにユーザー名を記述する。または/etc/cron.allowを作成し、許可するユーザーのみを記述することで、それ以外のユーザーの使用を禁止できる。

@rebootはいつ実行されるか?

システムの起動時、cronデーモンが開始したタイミングで実行される。厳密な「システム全体の起動完了後」ではなく、cronサービス開始時となる点に注意が必要だ。

Shota Ren Nakamura Sato

筆者情報

Shota Ren Nakamura Sato

記事は情報源の確認を行いながら日中も継続的に更新されます。