Instiq
第3章 · システム管理·v1.0.0·更新 2026/7/6·読了目安 約12分

変更要約: 初版(主題1.08・副主題1.08.1〜1.08.3に対応)

3.2ジョブスケジューリング

この節の要点

定期実行・指定時刻実行の仕組みを学びます。croncrontab の書式・/var/spool/cron//etc/crontab/etc/cron.d/ と cron.{hourly,daily,weekly,monthly})、単発実行の atatqatrm)、電源断を補償する anacron/etc/anacrontab)、利用制限(/etc/cron.allow/etc/cron.deny/etc/at.allow/etc/at.deny)を押さえます。

バックアップ・ログ集計・証明書更新——サーバー運用は決まった時刻に決まった処理の積み重ねです。定期は cron、単発は at、「電源が入っていなかった分の埋め合わせ」は anacron と、3つの使い分けが本節の骨格です。

3.2.1cron と crontab

  • ユーザーの定期ジョブ=crontab -e で編集(実体は /var/spool/cron/ 配下に保存・直接編集しない)。-l 一覧・-r 全削除。
  • 書式=分 時 日 月 曜日 コマンド(5フィールド)。例 30 2 * * 1 /opt/backup.sh毎週月曜 2:30*/10 は10分おき・1-5 は月〜金。
  • システム側=/etc/crontab6フィールド=実行ユーザー欄が入る)・/etc/cron.d/(パッケージが置く定義)・cron.{hourly,daily,weekly,monthly}/ にスクリプトを置くだけでも定期実行できる。

3.2.2at・anacron・利用制限

  • at一度だけの実行予約(echo "/opt/report.sh" | at 23:00at now + 2 hours)。確認=atq・取消=atrm ジョブ番号。
  • anacron日単位以上の周期を「時刻」でなく「間隔」で管理し、電源オフで飛んだ実行を起動後に埋め合わせる(ノート PC や夜間停止するマシン向け)。設定は /etc/anacrontab(周期・遅延分・ジョブ名・コマンド)。
  • 利用制限=cron.allowcron.deny(at は at.allowat.deny)。allow が存在すれば記載ユーザーのみ許可(deny は無視)・allow が無ければ deny 記載者だけ拒否。
試験ポイント

crontab の5フィールド(分 時 日 月 曜日)の読み書きは計算問題として必出です。「/etc/crontab にはユーザー欄がある(6フィールド)」「一度だけ=at・停止補償=anacron」「allow ファイルがあれば allow が全て」も定番。「0 */6 * * *=6時間おきの毎正時」のような間隔記法まで読めると安心です。

crontab の読み書きは左から「分 時 日 月 曜日」と唱えるのが全てです。「毎日 3:15」= 15 3 * * *、「毎月1日の 0:00」= 0 0 1 * *、「平日 9:00」= 0 9 * * 1-5。曜日は 0(日)〜6(土)で、日と曜日の両方を指定すると OR になる点はやや高度な注意点です。cron の弱点は「その時刻に電源が入っていなければ実行されない」こと——毎晩バックアップを 2:00 に仕込んでも、夜間シャットダウンする端末では永遠に走りません。そこで anacron が「前回実行から1日以上経っていれば、起動後(指定の遅延分後)に実行」という間隔ベースの補償を担います。ディストリビューションの cron.daily が確実に毎日走るのも、内部的に anacron が絡んでいるためです。at は「30分後にサービスを再起動したい」「深夜0時に一度だけ切り替えを実行」のような単発予約専用で、ジョブ管理(atq/atrm)とセットで覚えます。

要件使うもの要点
毎日/毎週の定期実行cron(crontab -e)分 時 日 月 曜日
一度だけの予約at(atq/atrm)now + 2 hours 等
電源断の埋め合わせanacron間隔ベース・/etc/anacrontab
利用ユーザーの制限cron.allow / cron.denyallow があれば allow が優先
注意

ひっかけ: crontab の「30 2 * * 1」を「1月の2:30」や「毎日 2:30」と読ませる誤答が定番です(正しくは毎週月曜の 2:30=第5フィールドは曜日)。また「cron.allow と cron.deny の両方に載っているユーザーは拒否される」も誤り=allow が存在する時点で deny は無視され、allow 記載者は許可されます。「anacron は分単位のジョブも扱える」も誤り(日単位以上)です。

cron・at・anacron の使い分けと crontab 書式・allow/deny の図。
「分 時 日 月 曜日」と唱える

3.2.3この節のまとめ

  • crontab=分 時 日 月 曜日(/etc/crontab は+ユーザー欄)。置き場所は /var/spool/cron/・cron.d・cron.daily 等
  • at=単発(atq/atrm)・anacron=日単位+電源断補償。制限は allow 優先→無ければ deny

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 毎週月曜日の午前2時30分にバックアップスクリプトを実行したい。crontab の記述として正しいのはどれ?

Q2. 夜間はシャットダウンされる端末で、毎日のメンテナンスジョブを「電源投入後に埋め合わせ実行」させたい。適切な仕組みは?

Q3. /etc/cron.allow と /etc/cron.deny の両方が存在し、ユーザー suzuki は cron.allow のみに記載されている。suzuki は crontab を使えるか?

理解度を確認第3章「システム管理」の問題を解く