対象者
- CentOS6以降使ってる
- cronで時間帯指定して定期実行したい
環境
$ cat /etc/redhat-release
CentOS release 6.10 (Final)
多分 CentOS7
もほぼ同じ手順
手順
1. cron
インストール
RHEL6からはデフォルトでanacron
ってのが入ってる。
このanacron
をアンインストールして従来のcron
をインストールする。
(anacron
... 負荷が掛からない様にOSが良い感じに時間帯を調整して実行してくれる。つまり自分で実行時間を指定できない)
$ sudo yum -y install cronie-noanacron # noanacronインストール
$ sudo yum remove cronie-anacron # anacron削除
※パッケージの依存関係の問題で、noanacron
をインストールしてからanacron
を削除する必要があることに注意
2. 設定ファイル編集
$ sudo vim /etc/crontab
crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=hogehoge@example.com
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
# | | | | |
# * * * * * user-name command to be executed
* * * * * root su - [実行ユーザ] -lc "cd /home/[実行ユーザ]/[実行ファイルDIR] && [実行コマンド]"
# bundleみたいに実行パスを考える必要があるなら↑の方法が安心ぽい
※$ crontab -e
で編集した方が好ましいかも
参照
-
キャッシュ屋blog : CentOSのcron実行時刻をcentos5以前と同様にジャストタイムにする方法
-> おおよその流れ -
ALL about Linux : CentOS6 の cron.daily 実行時刻を CentOS5 以前と同様に設定する
->anacron
のランダム実行についての説明が丁寧。 -
pospomeのプログラミング日記 : /etc/cron.monthly/ と crontabコマンド の違い
-> タイトル通り -
qiita : cronからbundle exec...はsu - -lc ...が一番便利
-> タイトル通り