写一个tomcat的启动脚本并不是多么困难的实情,网上很多脚本基本功能都能实现,但是其实并不完善。
之所以想写这个脚本是因为大家在写脚本的时候使用的方法太“笨”,比如去查找某进程PID大家一般都会通过ps -ef配合grep去实现,但是大家并不知道可以用pidof和pgrep来查找进程的PID。还有程序的启动、停止、状态查看都可以用系统的函数来实现,我们要做的只是简单的调用就OK。
所以系统的functions(/etc/init.d/functions)很重要,大家都应该去熟悉了解它。
#!/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用户启动 echo $"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