Let's Encrypt の証明書が切れるよーってメールが度々来ていて certbot の cron 設定しているはずなのになんだかなあと思ってその都度手動でやっていた。
cron はちゃんと動いている cron.daily は anacron に設定されている。
$ cat /var/log/cron* | grep daily | head
Dec 16 04:30:07 ... run-parts(/etc/cron.daily)[15097]: finished logrotate
...
$ cat /etc/anacrontab
...
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
...
どうやら+x がついていないのが原因っぽいなってことがわかった。
$ ls -al /etc/cron.daily/
...
-rw------- 1 root root 46 Nov 18 22:05 certbot
...
-rwx------ 1 root root 219 Jul 15 21:16 logrotate
...
ので+x をつけ、あとで様子を見ることにする。
$ sudo chmod u+x /etc/cron.daily/certbot
anacron は run-parts でプログラムを起動する、というかそう設定に書いてある。
第 21 章 システムタスクの自動化 - Red Hat Customer Portal
Linux 2.6 - man page for run-parts (linux section 8)
run-parts runs all the executable files named within constraints described below found in directory directory. Other files and directories are silently ignored.
だそうで cron.daily のディレクトリに何かしらのスクリプトなり実行ファイルを置いていても、実行することの出来ないものであれば無視されるのは正しい動き。 verbose オプションつけられたら cron 側のログ的なところにもうちょっと何かでてくれそうな気がする。 ちなみにこのサーバにいる run-parts にはオプションが list と test くらいしかなかった。多分 cron か anacron が古い…?
$ man run-parts
...
SYNOPSIS
run-parts [--list|--test]<directory>
...
適当に yum update しても出てこない。 調べてみると久しく更新されていないっぽい。
crontabs-1.11-6.20121102git.el7.noarch.rpm CentOS 7 Download
パッケージに含まれる run-parts を更新していないってことなのかな、わからん。
まあいっか、ということで追いかけるのはおわり。