2468


Ubuntu14.04上でcronで指定した定期処理が実行されていなかったのでデーモンが動いてるかどうかを確認するために

[code]

    # service cron status
    cron start/running, process 882
    
[/code]

で確認して、その後何度か`echo foo > /var/foo/tmp.txt` などのコマンドを試してみたのですがファイルが生成されなかったため

[code]

    # service cron restart
    
[/code]

すると正常に動作するようになりました。

例えばサーバーが正常動作してる時に`ping`で確認するように、`cron`のデーモンが正常に動いているかどうかを判断するようなコマンドはあるのでしょうか？


CC BY-SA 3.0
2014-12-24T02:53:15.050
2461
2014-12-25T08:05:08.453
3271
question
linux
cronのデーモンが正常に動いてるかどうかの確認方法


プロセスとしての動作であれば、質問の例ですと、

[code]

    $ cat /proc/882/status
    
[/code]

などとすれば、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の応答ができるとは限らない、と同程度だと思ってください。。)


CC BY-SA 3.0
2014-12-24T04:37:28.000
2468
2014-12-25T08:05:08.453
2014-12-25T08:05:08.453
2992
2992
2461
answer


そのままですが、

`* * * * * date > /var/foo/tmp.txt`

としておいて、/var/foo/tmp.txt の timestamp を

`ls -l --time-style=+%s /var/foo/tmp.txt`

などで確認するのはいかがでしょうか。


CC BY-SA 3.0
2014-12-24T12:09:50.893
2496
2014-12-24T12:09:50.893
5288
2461
answer