目次
はじめに
Linuxでは、定期的なバックアップやログのローテーション、バッチ処理などを自動化する仕組みが非常に重要です。これを実現するのが「ジョブスケジューリング」です。
Linuxでは主に以下の3つの仕組みを使ってジョブのスケジュールを設定します:
- cron:指定時間・間隔で繰り返し実行
- anacron:cronが逃した処理を後から確実に実行
- at:一度だけのスケジュール実行
1. cron:定期的にジョブを実行する
crontabの基本書式
分 時 日 月 曜日 コマンド
例:
30 2 * * * /usr/local/bin/backup.sh
→ 毎日 2:30 にスクリプトを実行。
crontab を設定・編集する
crontab -e # 自分のcrontabを編集
crontab -l # 一覧表示
crontab -r # 削除
システム全体のcronディレクトリ
| ディレクトリ | 説明 |
|---|---|
/etc/cron.hourly/ | 毎時実行 |
/etc/cron.daily/ | 毎日実行 |
/etc/cron.weekly/ | 毎週実行 |
/etc/cron.monthly/ | 毎月実行 |
/etc/cron.d/ | 他の設定ファイルを追加 |
ファイルの中身には crontab と同様の書式を使用します。
システム全体の /etc/crontab
このファイルは「ユーザー指定付き」のスケジュールが可能です。
分 時 日 月 曜日 ユーザー コマンド
例:
0 4 * * * root /usr/local/sync.sh
2. at:一度だけのジョブをスケジュール
使い方
at 15:00
プロンプトが開いたら、実行したいコマンドを入力:
echo "シングル実行テスト" >> /tmp/test.log
Ctrl+D # ジョブ確定
ジョブの確認・削除
atq # 登録ジョブの一覧
atrm 2 # ジョブ番号 2 を削除
3. anacron:cron の補完的な仕組み
cron は「電源がオンのときにしか実行されない」ため、ノートPCや仮想マシンでは逃してしまう可能性があります。
anacron は、「前回の実行から指定日数が過ぎていたら実行する」というロジックで、確実性を補完します。
設定ファイル:/etc/anacrontab
期間 遅延時間 タスク名 コマンド
例:
1 5 daily-job run-parts /etc/cron.daily
1:1日ごとに実行5:起動後5分の遅延daily-job:ジョブ名run-parts:cronディレクトリ内のスクリプトを一括実行
4. アクセス制御
cronのアクセス制御ファイル
/etc/cron.allowに登録されているユーザーだけが使用可能/etc/cron.denyにあるユーザーは使用できない
at のアクセス制御ファイル
/etc/at.allow/etc/at.deny
allowが存在すれば、それが優先される。
まとめ:用途に応じた使い分け
| 種類 | 目的 | 特徴 |
|---|---|---|
| cron | 定期実行 | 安定した稼働システム向け |
| at | 単発ジョブ | 1回だけの自動処理 |
| anacron | 電源OFF時の補完 | ラップトップや間欠稼働環境向け |

コメント