out of swap space(その10:取り敢えずprocess監視でしのぐ毎日)

その後も時々発生しており、process監視でしのいでいる状態です。
その5だとmilterの子processが死んだ場合、sendmailが動かなくなるため、ちょっとscriptを変更しました。5分周期以外で起動する場合には、起動周期(sec)を引数として与える必要があります。

#!/bin/sh
sec=$1
t0=`date -j "+%s"`

if [ -z $sec ]; then
  sec=300
fi

for proc in devd local_unbound syslogd ntpd sshd sendmail cron blacklistd; do
  /etc/rc.d/$proc status 1>/dev/null || /etc/rc.d/$proc start
done

for proc in saslauthd nsd mysql-server dovecot apache24 milter-greylist \
  php-fpm; do
  /usr/local/etc/rc.d/$proc status 1>/dev/null \
    || /usr/local/etc/rc.d/$proc start
done

for datetime in `/usr/bin/sed -n 's/\(...............\).*: Milter (greylist): to error state/\1/p' /var/log/maillog | sed 's/ /0/g'`; do
  t=`/bin/date -j -f "%b0%d0%T" $datetime "+%s"`
  if  [ $(($t0 - $t)) -le $sec ]; then
    /usr/local/etc/rc.d/milter-greylist restart
    break
  fi
done

その9へ戻る その11へ続く