cron、anacronによって、日、週、月などの周期でコマンドを実行することができます。
※目次をクリックすると目次の下部にコンテンツが表示されます。
・CronのRPMパッケージ名は”cronie”、Anacronは”cronie-anacron”。
例)
# rpm -qa | grep cron
cronie-1.4.4-7.el6.x86_64
cronie-anacron-1.4.4-7.el6.x86_64
crontabs-1.10-33.el6.noarch
・Cronはある特定時刻を設定し、1分おきの頻度でジョブの実行が可能。
しかし、ユーティリティはシステムが継続的に稼働状態であることを前提としており、ジョブがスケジュールされている時にシステムが稼働していない場合は、ジョブは実行されない。
・Anacronは、ジョブがスケジュールされている時点でシステムが稼働していなくてもジョブを記憶していて、次回にシステムが立ち上がった時にジョブを実行してくれる。
しかし、Anacronは1日に1回しかジョブを実行できない。
①起動、停止
service crond start
service crond stop
②自動起動の設定
chkconfig crond on
③cronのログによる確認
cronの実行ログは、/var/log/cronに記録される。
設定した実行スクリプトが実行されていない場合は、このログファイルを確認する。
# ジョブの実行に使用されるシェル環境 SHELL=/bin/sh # 実行可能なプログラムへのパス PATH=/sbin:/bin:/usr/sbin:/usr/bin # anacronジョブの出力をEmailで受け取るユーザーのユーザー名 MAILTO=root # ジョブごとに指定されているdelay in minutes変数に追加される最大の時間分数。 # 最短の遅延時間は、デフォルトで6分なので、45を指定した場合は # delay in minutes に6分から45分までの範囲でランダムな時間が追加される。 RANDOM_DELAY=45 # スケジュールされているジョブが実行可能になる時刻の範囲 START_HOURS_RANGE=3-22 # スケジュールされているジョブ #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
●各項目の説明
〇#period in days
・ジョブの実行頻度の日数。
・整数もしくはマクロ(@daily、@weekly、@monthly)として定義可能。
・@dailyは1、@weeklyは7を表し、@monthly月の長さに関係なく毎月1回ジョブが実行。
〇#delay in minute
・ジョブの実行までにanacronが待機する分数。RANDOM_DELAYの設定値が追加される。
〇#job-identifier
・ジョブ名。ログファイルで使用される。
〇#command
・実行するコマンド
●上記例の実行内容
最初に定義してあるジョブは毎日、3:11から3:50の間に実行される (RANDOM_DELAYが6分から45分の間で、delay in minutes属性がこれに5分追加する)。
このジョブに指定されているコマンドは、run-partsスクリプトを使って/etc/cron.dailyディレクトリ内にあるすべての実行プログラムを実行する(run-partsスクリプトがディレクトリをコマンドラインの引数として受け取り、ディレクトリ内のプログラムを順にすべて実行する)。
特に設定変更する必要がなければ、”/etc/cron.daily”ディレクトリなど設定されているディレクトリ内に定期的に実行させたいスクリプトを配置すると、cronによって定期的に実行されるようになる。
●設定例(/etc/crontab)
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # ジョブのコマンド実行時にホームディレクトリとして使用されるディレクトリ HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * username command to be executed 27 22 * * * root run-parts /etc/cron.daily
●数値の指定方法
〇アスタリスク(*)
・すべての有効な値を指定
〇整数の間のハイフン(-)
・整数の範囲を指定。
〇コンマ(,)で複数の値を指定
〇/integer
・ステップ値を指定。
・0-59/2とすると、分フィールドで1分おきの間隔を定義。
・月フィールドで値*/3を指定すると、3カ月ごとにタスクが実行。
上記の例では、週、月、日単位では、”*”が指定されていて、全て実施対象になるので、毎日22時27分にrootユーザーによって”run-parts /etc/cron.daily”コマンドが実行される設定になっている。
run-partsコマンドによって、”/etc/cron.daily”ディレクトリ内にあるスクリプトが実行される。
2)非rootユーザーはcrontabユーティリティで設定
・crontab -eコマンドで編集。
crontab -eコマンドを実行するとエディタモードになる。
ユーザーを指定する欄が無くなる以外は同じフォーマットで設定する。
・crontabへの変更を保存すると、crontabはユーザー名に応じて保存され、ファイル/var/spool/cron/usernameに書き込まれる。
※cronデーモンは、変更を確認するために/etc/anacrontab、/etc/crontab、/etc/cron.d/ディレクトリ、/var/spool/cron/ディレクトリを毎分チェックする。何らかの変更が発見されるとメモリーにロードされるので、設定を変更してもデーモンを再起動する必要はない。
各行にユーザー名を1つ配置する。
・cron.allowが存在する場合は、そのファイルに記載されているユーザーのみがcronの使用を許可され、cron.denyは無視される。
cron.allowが存在しない場合は、cron.denyに表示されているユーザーはcronを使用できない。
・アクセス制御ファイルが変更された場合でも、cronデーモンを再起動する必要はない。
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限