Alpine Linux の cron

以前、Let’s Encrypt の証明書の取り直しに、certbot から acme.sh を使う方法に変えたという記事を書いたのですが、その後時々動作確認を行っていてちゃんと動いているように思っていました。しかし、それは大きな「勘違い」だったのです……

証明書の有効期限は最大3ヶ月で、有効期限の残りが 30日を切ると更新できるようになっています。なので、cron の weekly で週に一回更新手続を実行させていた「つもり」だったのですが、実際にはシェルスクリプトの記述が間違っていて、週に一度の更新手続が実行されていませんでした。

/etc/periodic/weekly

にスクリプトを置いて実行しようとしていたのですが、実行時インタプリタを指定する shebang の記述を

#!/bin/sh
としなくてはならないのに
#/bin/sh

と記述ミスしていたために run-part による実行がエラーになって、更新スクリプトが実行されていませんでした。なんとも情けない。エラーが起きていないかちゃんとログを見ようねというお話でした。