12-LPIC「level1」

LPIC|level 1【ジョブスケジューリング】

目標

  • ジョブスケジューリングについて理解する

ジョブスケジューリング

ジョブスケジューリング

ジョブスケジューリングとは、指定した時間やタイミングで自動的にコマンドやスクリプトを実行する仕組みのことです。ツール・仕組みについては以下の通りです。

ツール/仕組み用途
cron / crond定期的な繰り返しタスク(毎日、毎週など)
crontabユーザーがスケジュールを設定するコマンド・ファイル
anacronマシンが止まっていた間の定期タスクを後で実行
at一度だけ実行するタスクをスケジュール
アクセス制御実行を許可/拒否するための制御ファイル(cron.allow/cron.deny など)

cron / crond の仕組み

● cronとは?

  • 定期的に繰り返すタスクを実行するための仕組みです。
  • 例えば「毎日3時にバックアップを実行する」といった処理に使います。

● crondとは?

  • cronのデーモンプロセスです。常駐していて、各ユーザーのスケジュールを監視し、時間になると処理を実行します。
  • システム起動時に自動起動します(systemd: crond.service)。
# 状態確認
systemctl status crond

# 起動・停止
sudo systemctl start crond
sudo systemctl enable crond

crontab(設定方法とファイル構成)

ジョブをスケジューリングするにはcrontabファイルに実行したい「処理内容(コマンドやスクリプトへのパス)」と「実行タイミング(分・時・日など)」を記述・保存します。

Windowsのタスクスケジューラのような役割をします。

● crontabコマンド

  • ユーザーが自分のスケジュール(ジョブ)を設定・編集するためのコマンド。
  • ユーザーごとに1つのcrontabファイルが作られます。
crontab -e   # 編集
crontab -l   # 一覧表示
crontab -r   # 削除
コマンド説明
crontab -e現在のユーザーのcrontabファイルを編集(初回はエディタ選択が出ます。エディタを使って保存すると、自動的に反映されます。サービス再起動は不要です。)
crontab -l登録済みのジョブを表示します。
crontab -r現在のユーザーのcrontabファイルを削除します。※確認なしで削除されるので注意
crontab -u ユーザー名(rootのみ)他ユーザーのcrontabを操作可能

● crontabファイルの書式(スケジュール定義の行:基本構文)

  • 分 時 日 月 曜日 コマンド
30 2 * * * /usr/local/bin/backup.sh

「毎日午前2時30分に /usr/local/bin/backup.sh を実行する」というcronジョブです。

フィールド意味
0–59
0–23
1–31
1–12
曜日0–7(0と7は日曜)

● 特殊記号の使い方

記号意味使用例
*毎回(ワイルドカード)毎日、毎時間など
,複数指定1,15(1日と15日)
範囲指定1-5(月〜金)
/間引き指定*/10(10分おき)

● crontabファイルの場所

種類場所用途
ユーザーのcrontab/var/spool/cron/ユーザー名個別設定
システム全体のcron設定/etc/crontabrootが管理
cron.d用の設定/etc/cron.d/ファイル単位で定義可能
定期ディレクトリ/etc/cron.hourly/ などスクリプトを置くだけでOK

anacron

anacronはcronの弱点を補った機能をもっています。

● cronの弱点:
PCが電源OFFになっていた時間帯のジョブは実行されない

● anacronの役割:
マシンが起動したときに、前回実行されなかった日次・週次のジョブを補完実行する。

● 主な使用場所:
デスクトップPC、ノートPCなど常時稼働しない環境

● 設定ファイル

/etc/anacrontab

● 設定の形式

周期(頻度) 遅延(分) ジョブID コマンド

次は設定例

# /etc/anacrontab - example configuration

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 日数 遅延 ID      実行コマンド

1    5    cron.daily    nice run-parts /etc/cron.daily
7    10   cron.weekly   nice run-parts /etc/cron.weekly
30   15   cron.monthly  nice run-parts /etc/cron.monthly

# カスタム追加:毎日バックアップスクリプト実行(起動後2分後に)
1    2    backup        /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
フィールド説明
周期単位は「日数」(例:1=毎日、7=毎週、30=毎月)
遅延起動からジョブを実行するまでの遅延時間(分)
ジョブIDログファイルで使われる識別子
コマンド実行したいシェルコマンドまたはスクリプトのパス

at コマンド(単発ジョブ)

● 用途:

  • 一度だけ実行するジョブを予約したい場合に使用。
  • 例:明日午前3時にバッチ処理を1回だけ走らせたい

● 設定方法

at 03:00 tomorrow
at> /path/to/script.sh
Ctrl+D
コマンド説明
atqジョブ一覧の表示
atrmジョブの削除
at -c <ジョブID>ジョブ内容の確認

アクセス制御(cron / at)

● cronのアクセス制御

ファイル役割
/etc/cron.allow記載されたユーザーのみが使用可能
/etc/cron.deny記載されたユーザーは使用不可

※ cron.allow がある場合はそちらが優先され、deny は無視されます。

● atのアクセス制御

ファイル役割
/etc/at.allow記載されたユーザーのみが at 使用可
/etc/at.deny記載されたユーザーは at 使用不可

※ cronと同様、allow が優先されます。

どれを使うべきか

ツール向いている用途
cron(+crontab)定期的なバックアップや監視処理など、繰り返し型の処理
anacroncronと同じだが、マシンが停止中でもカバーしたい場合(ノートPCなど)
at一度きりの処理(例:メンテナンス後に再起動をスケジュール)

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST