cron が実行されない罠

さすがに毎日更新するのはきついですね.少しペース落とします(笑).



先日,ある FreeBSD マシン on VMware で,cron job が時々実行されていないことに気がついた.

一度も実行されないならまだわかるが,たまにちゃんと実行されるのが謎./var/log/cron を眺めていて原因がわかった.

  1. cron で ntpdate を 5 分ごとに回していた
  2. ntpdate の瞬間にマシンの時刻がかなり進む
  3. その時刻に実行されるべきだった他の job がスルーされる
  4. orz
対策として,ntpdate と他の job の実行時刻をなるべく離すようにしたら解決した.



また VMwareFreeBSD を動かす場合,VMware Tools を使っていてもすごい勢いで時刻がずれていくので (1 時間で数十分ずれるので,頻繁に ntpdate を実行しないとダメな状態だった),/boot/loader.conf で

hint.apic.0.disabled="1"
kern.hz=100
kern.timecounter.hardware=i8254
debug.acpi.disabled=timer

とかやったらかなり改善された.どれが効いているのかはわからんが.