FreeBSD12: OSアップデート後、cron が動かない

先日、管理している FreeBSD サーバーを OS 11.4 から 12.3 へ更新しました

更新作業は、時間だけの問題で、何事もなく成功したと思っていました。。。。。。。が、一台だけ、毎日自動実行されるスクリプトが動いていないようだとわかりました。

毎日の自動実行プログラムは、cron で実行しています。それとは別に、毎日、自動でシステムメンテナンスレポートが届きます。
システムメンテナンスレポートが届いていたので、cron で自動実行されるスクリプト結果が届いていないことに気付いていませんでした。複数のサーバーから同じレポートが届いていたので、気付きませんでした。

あれっ、そういえば、DNSサーバーからだけ届いてない!と、OS更新が終わってから気が付いたのは翌々日。FreeBSDサーバーは、ラジコの自動録音のバックアップに使っていて、メインのサーバーで録音に成功していれば動作はエラーでも構わないのですが、メインサーバーが失敗した場合、必要になります。メインサーバーでのcron による自動録音は問題なし。

問題の一台の /var/log/cron を見てみると、、

/usr/sbin/cron[83210]: in try_dlopen(): /usr/lib/pam_nologin.so.6: (null): Undefined symbol "fstat@FBSD_1.5"
/usr/sbin/cron[83210]: in openpam_load_module(): no pam_nologin.so found
/usr/sbin/cron[83210]: (CRON) error (can't start PAM)

エラーらしきログが残っていました。

メッセージをWeb検索してみると、同様の現象に遭遇した人の情報が見つかりました。FreeBSD 12.x の既知の現象のようです。

https://forums.freebsd.org/threads/crontab-not-working-after-upgrading-to-freebsd-12-0-release.68675/

いろいろグダグダと書いてある。長い文章を最後まで読むと、最後に簡単な対策が書いてありました。

cron デーモンを再起動せよ。ですって。まじか!

root にて、

#service cron restart

あらら、これで解決しましたよ。一時的にはね。問題は次回OS起動時。

毎回、再起動時にコマンドを再発行しないといけないのは困りますからね。

再起動後に、OSが通常稼働状態になるだろうと時刻に「date」コマンドを書いて、OSを再起動。予定時刻にcron実行結果が届きました。問題は解決したようです。

私は、FreeBSD12.3への更新を、freebsd-update コマンドを使って行いましたが、旧バージョンからのアップデートは、OS再起動時、freebsd-update install コマンド発行時、ディスクに高負荷状態を生みますので、cronデーモン起動前に処理が終わらなかったのかもしれません。

ちなみに、OSは 32bit FreeBSD で、Athlon64 x2 のPCで動いています。目的に対するハードウェアスペックは十分なのですが、OSアップデート直後の高負荷でうまく起動できなかったのかもしれません。

とりあえず解決したものと思います。

そして、数時間後、

no pam_nologin.so found

のエラーメッセージで検索してみたところ、、、、、自分のメモが見つかりました。ガックリ。

過去にも、この問題に遭遇していたのね、私。でもまあ、cron または OS再起動が恒久対策になることがわかりましたので、良しとしましょう。

コメントを残す