เวลาสั่ง shutdown แล้วอยากให้ script shutdown program ของเราทำงานด้วย
ปัญหาที่เจอคือ ส่วนที่ เป็น prog กำหนดไม่ตรงกับชื่อ script ที่เอามาทำ services
เช่นชื่อ script คือ ifmxd แต่ prog กำหนดเป็น informix
ทำให้เวลาระบบสร้าง lock file ใน /var/lock/subsys/ เป็น informix ซึ่งพอระบบทำการ check ก็ไม่เจอ เลยไม่ทำการ execute kill script (K*)
หลังจากที่สร้าง script เสร็จแล้วก็ควร Add เข่า chkconfig maintenance ด้วย
chkconfig –add ifmxd
ตัวอย่าง script
——————————————————————————————————
# chkconfig: 2345 90 80
# description: start and stop Informix
#!/bin/bash
#
# /etc/rc.d/init.d/ifmxd
#
# Starts the at daemon
#
# description: Informix Start/Stop Script
# processname: informix
# Source function library.
/etc/init.d/functions
RETVAL=0
# enviroment
NODE=`uname -n`
#
# See how we were called.
#
prog=”ifmxd”
ifmx_status() {
echo
ps -ef |grep -v grep |grep oninit|grep part01|tail -1 >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo “ifmx_part01 Stopped !!!!”
else
echo “ifmx_part01 Starting ….”
fi
ps -ef |grep -v grep |grep oninit|grep part04|tail -1 >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo “ifmx_part04 Stopped !!!!”
else
echo “ifmx_part04 Starting ….”
fi
echo
return 0
}
ifmx_start() {
##### start Informix
sleep 5
/usr/informix/scripts/start-stop/start_part01
sleep 5
/usr/informix/scripts/start-stop/start_part04
return 0
}
ifmx_stop() {
##### stop Informix
wall “TEST REBOOT”
sleep 10
/usr/informix/scripts/start-stop/stop_part01
sleep 5
/usr/informix/scripts/start-stop/stop_part04
return 0
}
start() {
# Check if atd is already running
if [ ! -f /var/lock/subsys/$prog ]; then
echo -n $”Starting $prog: “
ifmx_start
sleep 30
ifmx_status
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
echo
fi
return $RETVAL
}
stop() {
echo -n $”Stopping $prog: “
ifmx_stop
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
echo
return $RETVAL
}
restart() {
stop
start
}
status_at() {
ifmx_status
return $RETVAL
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status_at
;;
*)
echo $”Usage: $0 {start|stop|restart|status}”
exit 1
esac
exit $?
exit $RETVAL