この記事では、CentOS 6(ここでは6.9)にcronを設定する方法をご紹介します。
CentOS 6からは過去のバージョンとはcronの仕様が異なるanacronが採用されています。馴染みのないanacronを削除し、使い慣れたcronを設定していきます。
anacronは従来のcronと異なり、ジョブの実行時刻を指定することができません。実行時刻は一定時間の中でOSがスケジューリングして実行します。
今までの感覚で言うとなんとも使いづらい感じがしますが、一つのサーバーに仮想マシンが複数稼働している場合、特定の時間にジョブの実行が重なるとサーバーに高負荷をかけてしまいます。そんな時にはanacronは重宝する機能だといえるでしょう。
目次
設定手順
下記のコマンドで従来のcronをインストールし、anacronを削除します。
$ sudo yum -y install cronie-noanacron #通常のcronをインストール
$ sudo yum remove cronie-anacron #anacronを削除
anacronの設定ファイルを開きます。
$ sudo vi /etc/cron.d/dailyjobs
不要になった設定を全てコメントアウトします。
#SHELL=/bin/bash
#PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
#HOME=/
# run-parts
#02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
#22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
#42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
crontabを開いて従来のcronの設定を行います。
$ sudo vi /etc/crontab
以下の通り、エラー時のメールの送信先と基本的なジョブの実行時間を指定します。
MAILTO= hogehoge@hitori-josys.me
00 0 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
20 0 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
40 0 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
設定ファイルを保存して終了後、サービスを起動させ、システム起動時にも自動で起動するように設定すれば完了です。これで旧バージョンのcronと同じ動作をします。
$ sudo service crond start
$ sudo chkconfig crond on