1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

crontab と anacrontabの違い

Posted at

crontabanacrontab はどちらもスケジュールされたタスクを自動的に実行するための仕組みを提供しますが、設計目的と動作の仕組みが異なります。以下にその違いを詳しく説明します。


1. crontab の特徴

  • 目的: 指定した時刻にタスクを実行する。
  • 動作の前提: システムが指定した時間に起動している必要がある。
  • 動作の仕組み:
    • crondデーモンがバックグラウンドで動作し、指定された時刻にタスクを実行。
    • タスクが指定時刻に実行されなかった場合(例: システムがシャットダウンされていた場合)、そのタスクはスキップされる。
  • 設定ファイル:
    • ユーザーごとのcrontabファイル(crontab -eで編集)。
    • システム全体のスケジュールは/etc/crontab/etc/cron.d/に配置される。
  • スケジュール指定:
    分 時 日 月 曜日 コマンド 例: 毎日午前3時にスクリプトを実行
    0 3 * * * /path/to/script.sh
    
  • 使用場面:
    • 時間単位、日単位などの定期タスクを正確に実行したい場合。

2. anacrontab の特徴

  • 目的: システムが指定された時間に起動していなくても、タスクが確実に実行されるようにする。
  • 動作の前提: システムが再び起動したときに未実行のタスクを実行する。
  • 動作の仕組み:
    • anacronデーモンがシステム起動時に未実行のタスクを確認し、実行する。
    • タスクが「最後に実行されてからの経過日数」を基に実行を管理。
  • 設定ファイル:
    • システム全体の設定は/etc/anacrontabに記述。
  • スケジュール指定:
    頻度(単位: 日) 遅延 実行識別子 コマンド 例: 毎日スクリプトを実行
    1 5 daily-job /path/to/script.sh
    
    • 1: 1日ごとに実行。
    • 5: システム起動後5分の遅延を挟む。
    • daily-job: タスク識別名。
  • 使用場面:
    • システムが24時間稼働していない環境(例: デスクトップPCやラップトップ)で、定期タスクを確実に実行したい場合。

主な違い

特徴 crontab anacrontab
目的 時刻指定でタスクを正確に実行実行 漏れのないタスク管理
前提 指定時刻にシステムが稼働している必要 システムが一時的に停止していても対応
対象 サーバーのような常時稼働環境 デスクトップやラップトップなどの非常時稼働環境
単位 分単位で指定可能 日単位で指定
スケジュール漏れ スキップされる 次回の起動時に実行
設定ファイル /etc/crontab, crontab -e /etc/anacrontab

使い分けの例

1. crontabを使う場合

  • システムが常時稼働している場合。
  • 時刻指定が重要な場合(例: 毎日午前2時にログローテーションを実行)。

2. anacrontabを使う場合

  • ノートPCのように夜間はシャットダウンされる場合。
  • タスクを確実に実行したい場合(例: 毎日バックアップスクリプトを実行)。

併用のポイント

多くのLinuxディストリビューションでは、cronanacronが共存しています。例えば、cron.daily, cron.weekly, cron.monthlyディレクトリに配置されたタスクがanacron経由で実行されることが多いです。これにより、常時稼働の環境でも稼働時間の限られた環境でもタスク管理が柔軟に行えます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?