ジョブスケジューリング(cron, at, anacron)の基本と使い方

目次

はじめに

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時の補完ラップトップや間欠稼働環境向け

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次