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
調べてみると以下のような条件がある模様です。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UmFzcGJlcnJ5JTIwUGklRTMlODElQTdjcm9uZCVFMyU4MSVBRiVFNSU4QiU5NSVFMyU4MSU4NCVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MiU4QiVFMyU4MSVBRSVFMyU4MSVBQmNyb24uaG91cmx5JUUzJTgxJThDJUU1JThCJTk1JUUzJTgxJThCJUUzJTgxJUFBJUUzJTgxJTg0JUVGJUJDJTlGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz02YTJiMzBjMjhmYzEyMDQ0MTM4NGI5MjcyZDljNGFlNQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwYWJtb2xuaXlhJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzImdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05YmUxYzYwM2Y3OThjMTkzZTQxMDAxM2VkNGExYzU1ZA&blend-x=142&blend-y=491&blend-mode=normal&s=d261adf83529f19872be30bc6645700c)
Raspberry Piでcrondは動いているのにcron.hourlyが動かない? - Qiita
#問題の起きた環境ハード:Raspberry Pi 2 Model BOS:debian 8#起きた問題の詳細定期的に実行したいコマンドがあったので、hogehoge.shを作成して/etc…
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)との動作の違いは気をつける必要がありそうですね。