2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Cronでスケジューリング(Solaris編)!

定期的に決まったコマンドを実行する、あるいはシェルを実行したい場合に、Cronを使って行う。ここでは、そのCronを使ったスケジューリング設定について説明する(Solarisの場合)。

1.crontabコマンドによる設定
2./var/spool/cron/crontabs/rootに直接書き込む設定


1.crontabコマンドによる設定

 通常、cronはSolarisをインストールするとデフォルトでインストールされる必要不可欠な機能である。実行モジュールは、/usr/sbin/cronである。
cronのコンフィグレーションは、crontabコマンドを使って行う。
現在のcronの設定がどのようになっているかを表示するには、

# crontab -l

00 5 * * * /usr/sbin/ntpdate -b 133.100.11.8 > /dev/null

10 3 * * 0,4 /etc/cron.d/logchecker
10 3 * * 0 /usr/lib/newsyslog
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean

このように表示される。この設定を編集する場合は、

# crontab -e

で設定内容が表示されて、デフォルトではviモードで編集が出来る。

分  時 日 月 曜日 ユーザ         実行コマンド00  5  *   *   *   root      /usr/sbin/ntpdate -b 133.100.11.8 > /dev/null

分  : 01~59
時  : 1~24
日  : 1~31
曜日 : 0(日曜)~6(土曜)

この場合は、毎日AM 5時00分に/usr/sbin/ntpdate -b 133.100.11.8 > /dev/nullコマンドを実行するようになっている。
ちなみに、このコマンドは時計あわせである。

例えば、絶対時間ではなく、単に10分おきにコマンドを実行したい場合は

*/10 *  *  *  *    /usr/sbin/ntpdate -b 133.100.11.8 > /dev/null

これがだめな場合は、

0,10,20,30,40,50 * * * * /usr/sbin/ntpdate -b 133.100.11.8 > /dev/null

このように書く。


2./var/spool/cron/crontabs/rootに直接書き込む設定

もう一つの、方法は直接/var/spool/cron/crontabs/rootファイルに書き込む方法がある。ここでは、その方法を説明する。cronは、実行時に/var/spool/cron/crontabs/rootに書かれた内容を参照して実行する。したがって、スケジューリングしたいコマンド等を/var/spool/cron/crontabs/rootに直接記述すれば、本来の目的を果たすことが出来る。crontab -lはこのファイルを表示し、crontab -eはこのファイルを編集していることになる。
したがって、このファイルを直接偏しても良い。小生は、直接/var/spool/cron/crontabs/rootファイルを編集している。
編集し終えたら、以下を実行!

# killall -HUP cron もしくは、

# /etc/init.d/cron stop

# /etc/init.d/cron start

一端、cronをストップしてスタートさせる。
尚、cronの実行ログは、/var/cron/logである。ちゃんと実行されているかは、このログで観察しよう。

以上

コメント