質問: Ubuntu14.04上でcronで指定した定期処理が実行されていなかったのでデーモンが動いてるかどうかを確認するために ``` # service cron status cron start/running, process 882 ``` で確認して、その後何度か`echo foo > /var/foo/tmp.txt` などのコマンドを試してみたのですがファイルが生成されなかったため ``` # service cron restart ``` すると正常に動作するようになりました。 例えばサーバーが正常動作してる時に`ping`で確認するように、`cron`のデーモンが正常に動いているかどうかを判断するようなコマンドはあるのでしょうか?
回答: プロセスとしての動作であれば、質問の例ですと、 ``` $ cat /proc/882/status ``` などとすれば、OSが把握している状態は確認できます。 *State:* が、SかRあたりになっているか?とか。上記コマンドを数秒をあけて実行して、その二つの出力に差がないことを確認、つまり、変に値が動いているのであれば、待ちの状態が保ていない可能性があるので、それを目視してみるとか。 逆に、`echo foo > /var/foo/tmp.txt`が実行されたなら、voluntary_ctxt_switches あたりが動いているはずなので、それを点検する、とか。 `strace -p 882`として、妙な動きをしていないか(ちゃんとnanosleepなどで行儀良くしているか?)などを確認するのも有効です。*(コメントからの追記です)* あとは、動作に影響してしまいそうですが、`gdb -p 882` で、`info proc all`を眺めるくらいはできそうです。 ただ、`service cron status`が普通に帰ってくるのであれば、どっちも正常動作しているように見えてしまう可能性は高いです。 (なので、この方法は、pingが正常に応答したからといって、httpの応答ができるとは限らない、と同程度だと思ってください。。)