cronは*nixを使用している方ならば当たり前に使用していると思いますが、ズボラしてcron.dailyにscriptを置いて動作させようと思った時にハマったのでご紹介。
まぁ、このようにscript類を置いているとします。
$ ll /etc/cron.daily/
total 52
drwxr-xr-x 2 root root 4096 Jan 1 00:20 ./
drwxr-xr-x 102 root root 4096 Jan 1 00:20 ../
-rwxr-xr-x 1 root root 1474 Jun 19 2017 apt-compat*
-rwxr-xr-x 1 root root 314 Nov 27 2015 aptitude*
-rwxr-xr-x 1 root root 355 May 22 2012 bsdmainutils*
lrwxrwxrwx 1 root root 34 Dec 30 10:55 checkUpdate.sh -> /home/kometch/hosts/checkUpdate.sh*
-rwxr-xr-x 1 root root 1597 Nov 27 2015 dpkg*
-rwxr-xr-x 1 root root 52 Nov 12 08:02 log2ram*
-rwxr-xr-x 1 root root 372 May 6 2015 logrotate*
-rwxr-xr-x 1 root root 1293 Nov 7 2015 man-db*
-rwxr-xr-x 1 root root 1387 Sep 6 00:24 ntp*
-rwxr-xr-x 1 root root 249 Nov 13 2015 passwd*
-rw-r--r-- 1 root root 102 Apr 6 2016 .placeholder
-rwxr-xr-x 1 root root 441 Jan 28 2016 sysstat*
このような感じですね。
もちろん、crontabにはcron.dailyが実行されるように記述があります。しかし、実はcheckしてみると以下のように対象の一覧には「checkUpdate.sh
」が表示されません。
$ sudo run-parts --list /etc/cron.daily
/etc/cron.daily/0anacron
/etc/cron.daily/apache2
/etc/cron.daily/apport
/etc/cron.daily/apt-compat
/etc/cron.daily/bsdmainutils
/etc/cron.daily/cracklib-runtime
/etc/cron.daily/dpkg
/etc/cron.daily/locate
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/passwd
/etc/cron.daily/update-notifier-common
/etc/cron.daily/upstart
調べてみると以下のような条件がある模様です。
Raspberry Piでcrondは動いているのにcron.hourlyが動かない? - Qiita
問題の起きた環境 ハード:Raspberry Pi 2 Model B OS:debian 8 起きた問題の詳細 定期的に実行したいコマンドがあったので、hogehoge.shを作成して/etc/cron.hourly内に...
POINT
debian
- ファイル名に使える文字[
0-9A-Za-z-_
] - “
.
“は使えない ( hoge.sh などは無視される)
RedHat
- 末尾が”
~
“か”,
“以外のファイル
なるほどー Ubuntu環境だとファイル名に”.”を含めてしまうと無視されるのか。
というわけで修正。
$ sudo ln -s /home/kometch/hosts/checkUpdate.sh /etc/cron.daily/checkUpdate
$ sudo run-parts --test /etc/cron.daily
/etc/cron.daily/apt-compat
/etc/cron.daily/aptitude
/etc/cron.daily/bsdmainutils
/etc/cron.daily/checkUpdate
/etc/cron.daily/dpkg
/etc/cron.daily/log2ram
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/ntp
/etc/cron.daily/passwd
/etc/cron.daily/sysstat
含まれるようになりました。
このあたり、Debian(Ubuntu)とRHEL(CentOS)との動作の違いは気をつける必要がありそうですね。