寫一個tomcat的啓動腳本並不是多麼困難的實情,網上很多腳本基本功能都能實現,但是其實並不完善。
之所以想寫這個腳本是因爲大家在寫腳本的時候使用的方法太“笨”,比如去查找某進程PID大家一般都會通過ps -ef配合grep去實現,但是大家並不知道可以用pidof和pgrep來查找進程的PID。還有程序的啓動、停止、狀態查看都可以用系統的函數來實現,我們要做的只是簡單的調用就OK。
所以系統的functions(/etc/init.d/functions)很重要,大家都應該去熟悉瞭解它。
Linux學習之/etc/init.d/functions詳解
https://blog.51cto.com/billy98/2043957
#!/bin/sh
#create at 2016-08-23
#author billy
#qq 5884628
# chkconfig: 2345 31 61
# description: this is tomcat start scprits
prog="tomcat-pc"
BASE_DIR=/application/$prog
START="$BASE_DIR/bin/startup.sh"
SHUTDOWN=$BASE_DIR/bin/shutdown.sh
. /etc/init.d/functions #調用系統函數
RETVAL=0
uid=`id | cut -d\( -f1 | cut -d= -f2`
start() {
# Only root can start the service
[ $uid -ne 0 ] && exit 4
if status $prog > /dev/null ; then #查看status
exit 0
fi
daemon --user=tomcat "$START" >/dev/null 2>&1 && \ #使用daemon以tomcat用戶啓動
action $"Starting $prog: "
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
touch /var/lock/subsys/$prog
[ ! -f /var/run/${prog}.pid ] &&
/usr/bin/pgrep -f "$prog/conf" > /var/run/${prog}.pid
fi
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
#kill -9 `cat /var/run/${prog}.pid`
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && {
rm -f /var/lock/subsys/$prog
rm -f /var/run/${prog}.pid
}
return $RETVAL
}
case $1 in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart|reload)
stop
start
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload}"
RETVAL=2
;;
esac
exit $RETVAL
操作顯示如下: