Linuxのcron設定ガイド:定期実行を完全マスター

Linuxを使っていると「特定の時間に自動で処理を実行したい」という場面に出会うことがあります。例えば、毎朝決まった時間にバックアップを取りたいとか、ログファイルの整理を定期的に行いたいといったケースです。
こうした処理を自動で行うために便利なのが「cron(クロン)」と呼ばれる仕組みです。cronを正しく使えば、面倒な作業を自動化でき、作業効率が大幅にアップします。
本記事では、cronの基本から設定方法、注意点までを初心者にもわかりやすく丁寧に解説します。


cronとは何か?基本を理解しよう

cronは、Unix系OS(Linuxなど)で標準的に使われる定期実行スケジューラです。指定した日時・間隔で自動的にコマンドやスクリプトを実行してくれる仕組みです。

cronは「デーモン」として常時バックグラウンドで動作しており、/etc/crontab や各ユーザーの crontab ファイルを監視して、指定されたタイミングで処理を実行します。

たとえば、以下のような用途で使われます。

  • 定期的なログのバックアップ
  • システムメンテナンス処理の自動化
  • ファイルの自動同期や削除
  • サーバーのステータス確認や通知

crontabの書式を理解しよう

cronの設定は「crontabファイル」に記述します。書式は以下のような構成になっています。

分 時 日 月 曜日 コマンド

たとえば:

30 2 * * 1 /home/user/backup.sh

この例は「毎週月曜日の午前2時30分に /home/user/backup.sh を実行する」という意味です。

各フィールドの意味

フィールド説明設定例
分(0-59)実行する分0,15,30,45
時(0-23)実行する時間0=深夜, 12=正午
日(1-31)実行する日1,15,30など
月(1-12)実行する月1=1月, 12=12月
曜日(0-7)実行する曜日0と7は日曜, 1=月曜

特殊文字

  • *:すべての値を意味します(毎分・毎時など)
  • ,:複数指定
  • -:範囲指定
  • /:間隔指定(例:*/5は5分おき)

crontabを編集・確認する方法

crontabの編集

以下のコマンドで現在のユーザーのcrontabを編集できます:

crontab -e

初回はエディタの選択を求められることがあります(vinanoなど)。ファイルが開いたら、先ほどのような形式でジョブを追加します。

0 6 * * * /home/user/morning-task.sh

この例では、毎朝6時に指定スクリプトが実行されます。

crontabの確認

現在の設定を確認するには:

crontab -l

crontabの削除

すべてのcronジョブを削除したいときは:

crontab -r

※注意:取り消し不可です。削除前に crontab -l > backup.txt でバックアップを取るのがおすすめです。


実行ログとエラー出力の扱い方

cronジョブが失敗したときや、正しく動いているか確認したいときはログが役立ちます。

多くのLinuxディストリビューションでは、/var/log/cron または /var/log/syslog にcronのログが記録されます。

また、ジョブの出力結果をファイルに記録することも可能です:

0 3 * * * /home/user/cleanup.sh >> /home/user/cleanup.log 2>&1

この例では、標準出力(stdout)とエラー出力(stderr)の両方をcleanup.logに追記していきます。


よく使うcron設定例

毎分実行

* * * * * /path/to/script.sh

毎時0分に実行

0 * * * * /path/to/script.sh

毎日深夜1時に実行

0 1 * * * /path/to/script.sh

毎週日曜の22時に実行

0 22 * * 0 /path/to/script.sh

5分おきに実行

*/5 * * * * /path/to/script.sh

cronが動かないときのチェックポイント

パスの問題

cron環境では$PATHが通常のシェルよりも制限されています。whichでコマンドのフルパスを確認し、cronではそれを使うのが安全です。

/usr/bin/python3 /home/user/script.py

環境変数

cronはログインシェルの環境変数を引き継がないため、必要な環境変数は明示的にスクリプト内やcronファイルに書きます。

実行権限

実行したいスクリプトに実行権限があるか確認しましょう。

chmod +x /path/to/script.sh

rootユーザーのcronとシステム全体の設定

システム管理者(root)はユーザーごとのcrontabとは別に、以下のファイルでシステム全体のcronジョブを管理できます。

  • /etc/crontab
  • /etc/cron.d/(ディレクトリ内にジョブファイルを設置)
  • /etc/cron.daily/ /etc/cron.hourly/ などの定期実行スクリプトディレクトリ

/etc/crontabには「ユーザー名」フィールドが追加されています:

30 3 * * * root /usr/local/bin/system-task.sh

cronとatの違い

cronは繰り返し実行が前提ですが、「一度だけ」タスクを実行したい場合はatコマンドが便利です。

echo "/home/user/once.sh" | at now + 1 hour

まとめ

cronはLinuxでの自動化に欠かせない強力なツールです。
最初は書式に戸惑うかもしれませんが、一度使いこなせば繰り返しの作業から解放され、大幅な効率化につながります。

この記事ではcronの基本構造から設定方法、ログ確認や注意点までを解説しました。
ぜひ自分の環境でも実際にcrontabを設定し、自動化の第一歩を踏み出してみてください。

タイトルとURLをコピーしました