もう一ヶ月くらい前から、お客さんから異変の連絡は届いていた。
「当社Webの新着情報の X への自動投稿がされていない」
「Web から業務スケジュールの CSV ファイルをアップロードしたのに、それがDBに反映していない」
などだ。
どれも、Web画面での操作でサーバ上にファイルが作成される。それを cron で実行される監視プログラムで数分おきにポーリングし、ファイルが作成されているのが確認できたらバッチ処理を実行。そのファイルの内容を X に投稿したり、DBに登録したりしている。
お客さんから連絡を受けたらプログラムなど調べてみるのだが異常は見つからず、手動で実行したら正常に処理されるので「原因不明だが、とりあえず動いたのでOK」的に有耶無耶になっていたのである。
今夜もそういう連絡があったので、ついに俺も「ちゃんと調べてみるか」と重い腰を上げ(^^;、Qiita に @nagimaruxxx(Nagimaru)さんが投稿されていた「cronがどうやっても動かない時に考えられる原因とその対処法」という記事の「1. そもそもcronが動いてない」を試してみたら、
# service crond statusRedirecting to /bin/systemctl status crond.service??rond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: inactive (dead) since Mon 2026-03-09 21:46:17 JST; 1 months 14 days agoProcess: 1370 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)Main PID: 1370 (code=exited, status=0/SUCCESS)CGroup: /system.slice/crond.service
Active が inactive (dead) になってるやん。3/9 に落ちてるやん。丁度「X の投稿がされない」という連絡が来たのが 3/10 である。どんぴしゃじゃん。
すぐに実行。
# service crond startRedirecting to /bin/systemctl start crond.service# service crond statusRedirecting to /bin/systemctl status crond.service??rond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2026-04-23 22:00:05 JST; 6s agoMain PID: 15601 (crond)CGroup: /system.slice/crond.service??15601 /usr/sbin/crond -nApr 23 22:00:05 hoge systemd[1]: Started Command Scheduler.Apr 23 22:00:05 hoge crond[15601]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 54% if used.)Apr 23 22:00:05 hoge crond[15601]: (CRON) INFO (running with inotify support)Apr 23 22:00:05 hoge crond[15601]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
これで、監視プログラムがちゃんと作動するのを確認。プログラムばかり調べていたけど、crond が落ちてただけかい!!
いや、皆さんの中には、「そんなんすぐ気づくやろ」「一ヶ月もほってたとはどういうことだ」と怒られる方もいらっしゃるでしょう。
原因は二つかな。まず、俺が UNIX ライクな OS を触るようになってもう 30年以上経つが、「crond が落ちてた経験が一度もない」ってこと。httpd、sshd、named などのデーモンがこけたことは何度もあるが、crond は今回が初体験。なので crond が落ちてるなんて発想がなかったわ(笑)
そして二つ目が、「そもそもこのサーバ、俺が管理してるわけじゃない」ってことやね。俺がこの約二十年間に作ったプログラムが大量に動いているので root 権限を持たせてもらっているが、運用管理はやってないのよね。だからプログラムの調査はするけど、サーバ環境をそんなに力を入れて調べることは通常ないのであ~る。
というか、プログラムの保守契約もしていない。瑕疵担保責任ももう時効のプログラムばかりで、調査をしていること自体、半分俺の「善意」なのである(笑)
ま、良い経験になりました(笑)

コメントする