晩酌しながらサーバ管理。 こんな「てきとー管理者」にサーバ預けて、大丈夫?
Search
Powered by
Movable Type 4.23-ja
■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
-------------------------
京都の鍵トラブルなら鍵レスキュー 鍵師が、家・金庫・バイク・車等の解錠を始め鍵に関する全般、また防犯設備士からみた防犯診断の上の工事等、安心しておまかせ下さい。24時間対応致します。
その後、何度かcoreを吐くが、全く原因が掴めず。
このままでは、相当やばい!
って事で、
child pid XXXX exit signal Segmentation fault (11)
とか
child pid XXXX exit signal Bus error (7)
を吐いたら、Apacheを再起動するようにしてみた。
早速、swatchを導入。
通常 /root/.swatchrc に記述するようになっているが、これでは管理しにくいので、 /etc/swatch に設定ファイルを置いて動くようにしてみた。
# mkdir /etc/swatch
# cd /etc/swatch
# vi error_log.conf
----------------------------------------------------------------------------------------
#logfile: /var/log/httpd/error_log
watchfor /signal Bus error (7)|signal Segmentation fault (11)/
echo
mail admin@hogehoge.jp,subject=[Alert] Apache Restart!!
exec /etc/rc.d/init.d/httpd restart
----------------------------------------------------------------------------------------
こんな感じで設定。
swatchは標準で起動スクリプトが用意されていないので、色々調べてこんな感じで作ってみた。
----------------------------------------------------------------------------------------
#!/bin/sh
#
# Swatch
#
# chkconfig: 345 90 35
# description: swatch log monitoring
#
SWATCH=/usr/bin/swatch
LOCKFILE=/var/lock/subsys/swatch
CONFPATH=/etc/swatch
PROCFILE_PATH=/var/run
CONFFILE=*.conf
WORKPATH=/tmp
LOGFILE=/var/log/swatch/swatch.log
. /etc/rc.d/init.d/functions
start()
{
RESULT_CODE=0
if [ -f ${LOCKFILE} ]; then
echo "Swatch is already running."
exit 1
else
touch ${LOCKFILE}
fi
PROCCOUNT=0
for CONFIGFILE in ${CONFPATH}/${CONFFILE}
do
if [ -f ${CONFIGFILE} ]; then
PROCCOUNT=`expr ${PROCCOUNT} + 1`
TARGET_LOG=`head -1 ${CONFIGFILE} | awk 'BEGIN { FS = ":" }; { sub(/([ \t]+$|^[ \t]+)/, "", $2); print $2 }'`
echo -n "Starting swatch: ${TARGET_LOG}: "
daemon ${SWATCH} \
--config-file ${CONFIGFILE} \
--tail-file ${TARGET_LOG} \
--script-dir=${WORKPATH} \
--awk-field-syntax \
--daemon \
--pid-file ${PROCFILE_PATH}/swatch.${PROCCOUNT}.pid \
2>> ${LOGFILE}
RETVAL=$?
echo
if [ ${RETVAL} != 0 ]; then
RESULT_CODE=${RETVAL};
fi
else
RESULT_CODE=7
fi
done
return ${RESULT_CODE}
}
stop()
{
if [ -f ${LOCKFILE} ]; then
for PID in ${PROCFILE_PATH}/swatch.*.pid
do
if [ -f ${PID} ]; then
PID_NUMBER=`cat ${PID}`
echo -n "Shutting down swatch (pid ${PID_NUMBER}): "
killproc -p ${PID}
RETVAL=$?
rm -f ${PID}
echo
else
RETVAL=7
fi
done
fi
rm -f ${LOCKFILE}
rm -f ${WORKPATH}/.swatch_script.*
return ${RETVAL}
}
status()
{
if [ -f ${LOCKFILE} ]; then
echo -n "Swatch (pid :"
for PID in ${PROCFILE_PATH}/swatch.*.pid
do
if [ -f ${PID} ]; then
echo -n " `cat ${PID}`"
fi
done
echo ") is running."
else
echo "Swatch is stopped."
fi
return 0
}
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo "Usage: swatch {start|stop|restart|status}"
exit 1
esac
exit ${RETVAL}
----------------------------------------------------------------------------------------
これを
chkconfig --add swatch
して
service swatch start
して
chkconfig swatch on
こんな感じ!
これで、ちょっと様子見だな。