tomcat 自启动脚本
来源:原创
时间:2018-09-18
作者:脚本小站
分类:SHELL
#!/bin/bash # Script name: Tomcat Startup/shutdown # Author: fire # Date: 2016.5.5 # # Comment: # 根据脚本名启动相应的tomcat进程.系统内一个或多个tomcat时使用,不可添加到 ntsysv 中启动 # 例如,要启动 /home/tomcat_im 则将此脚本复制到 /etc/rc.d/init.d/ 并命名为 tomcat_im # 因其根据 basename $0 做启动服务名的判定,固不可建立自启动/关闭的软连接 # 要随系统启动请在 /etc/rc.d/rc.local 中加入命令 service tomcat_im start # 手动启动/关闭请用root用户执行: service tomcat_im {start|stop|restart} 既可 # 日志文件存放位置: /var/log/tomcat.log # 移植性: 只需更改脚本中如下变量,保持如下变量的正确即可在其他linux系统中使用 # $TUSER(启动tomcat的用户) $TOMCAT_HOME(tomcat5绝对路径) # $JAVA_HOME 在环境变量中设置 # # chkconfig: 2345 80 20 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 . /etc/profile # Script start... TOMCAT=tomcat TUSER=tomcat TOMCAT_HOME=/opt/$TOMCAT CATALINA_PID=$TOMCAT_HOME/logs/catalina.pid # Function get_pid get_pid() { pid=$(ps -ef|grep java |grep -w "$TOMCAT_HOME"|grep -v grep|awk '{print $2}') echo $pid } # Function Process_stat process_stat() { pid1=$(get_pid) pid2=$(cat $CATALINA_PID 2>/dev/null) #if [ -n "$pid1" -a $pid1 -ne 0 ];then if [ -n "$pid1" ];then if [ -n "$pid2" ];then if [ "$pid1" = "$pid2" ];then #echo "$TOMCAT is running" return 0 else #echo "$TOMCAT is running,but pid file is incorrect!" return 1 fi else #echo "$TOMCAT is running,but pid file is not exists!" return 2 fi else #echo "$TOMCAT is stopped" return 3 fi } # Function Start start() { process_stat STAT=$? if [ $STAT -eq 0 ];then echo "$TOMCAT is running" return $STAT elif [ $STAT -eq 1 ];then echo "$TOMCAT is running,but pid file is incorrect!" return $STAT elif [ $STAT -eq 2 ];then echo "$TOMCAT is running,but pid file is incorrect!" return $STAT elif [ $STAT -eq 3 ];then echo -n "Start $TOMCAT:" #su - $TUSER -c "$TOMCAT_HOME/bin/startup.sh" >/dev/null 2>&1 su - $TUSER -c "/usr/local/python2.7/bin/python $TOMCAT_HOME/bin/listenCatalina.py >> $TOMCAT_HOME/logs/listenCatalina.log 2>&1 &" su - $TUSER -c "$TOMCAT_HOME/bin/catalina.sh start &>/dev/null" RETVAL=$? pid=$(ps -o pid,args --no-heading -C java|grep -w $TOMCAT_HOME|awk '{print $1}') echo $pid > $CATALINA_PID if [ $RETVAL -eq 0 ];then echo "[OK]" fi fi } # Function wait_stop wait_stop() { time=10 for((i=1;i<=$time;i++)) do pid=$(get_pid) if [ -n "$pid" ];then sleep 1 else break fi done } # Function stop stop() { process_stat STAT=$? pid=$(get_pid) if [ $STAT -eq 0 ];then echo -n "Stop $TOMCAT:" if ps -ef | grep "python $TOMCAT_HOME/bin/listenCatalina.py" |grep -v grep > /dev/null ; then pythonpid=` ps -ef | grep "python $TOMCAT_HOME/bin/listenCatalina.py" | grep -v grep |awk '{print $2}' ` for ppid in $pythonpid do kill $ppid done fi #su - $TUSER -c "$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 su - $TUSER -c "$TOMCAT_HOME/bin/catalina.sh stop 10 -force &>/dev/null" wait_stop #rm -rf $TOMCAT_HOME/work/* #rm -rf $TOMCAT_HOME/temp/* num=3 for((i=1;i<=$num;i++)) do process_stat if [ $? -eq 3 ];then echo "[OK]" break elif [ $i -ne $num ];then kill $pid else kill -9 $pid process_stat [ $? -eq 3 ] && echo "[OK]" fi done elif [ $STAT -eq 1 ];then echo "can not stop $TOMCAT process,the pid file is incorrect!" return $STAT elif [ $STAT -eq 2 ];then echo "can not stop $TOMCAT process,the pid file is incorrect!" return $STAT elif [ $STAT -eq 3 ];then echo "$TOMCAT is stopped" return 0 fi } # Function status status() { process_stat STAT=$? if [ $STAT -eq 0 ];then echo "$TOMCAT is running" return $STAT elif [ $STAT -eq 1 ];then echo "$TOMCAT is running,but pid file is incorrect!" return $STAT elif [ $STAT -eq 2 ];then echo "$TOMCAT is running,but pid file is incorrect!" return $STAT elif [ $STAT -eq 3 ];then echo "$TOMCAT is stopped" return $STAT fi } #execute case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo "Use :$0 {start|stop|restart}" ;; esac
version2:
#!/bin/bash # # Startup script for Jakarta Tomcat # # chkconfig: - 80 10 # description: Jakarta Tomcat Java Servlet/JSP Container TOMCAT_HOME=/usr/local/tomcat TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh TOMCAT_START=$TOMCAT_HOME/bin/startup.sh #Necessary environment variables export CATALINA_HOME=$TOMCAT_HOME export JAVA_HOME=/usr/local/jdk TOMCAT_USER=application # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 #Check for tomcat script if [ ! -f $TOMCAT_HOME/bin/catalina.sh ] then echo $TOMCAT_HOME/bin/catalina.sh echo "Tomcat not available..." exit fi start() { echo "Starting Tomcat: " # daemon $TOMCAT_START /bin/su - $TOMCAT_USER -s /bin/bash -c $TOMCAT_START echo touch /var/lock/subsys/tomcatd chown application:application /var/lock/subsys/tomcatd # We may need to sleep here so it will be up for apache # sleep 5 # Instead should check to see if apache is up by looking for http.pid for pid in $(pidof java) do echo "disabling oom on pid $pid" echo -17 > /proc/$pid/oom_adj done } stop() { echo $"Shutting down Tomcat: " echo $TOMCAT_STOP /bin/su - $TOMCAT_USER -s /bin/bash -c $TOMCAT_STOP rm -f /var/lock/subsys/tomcatd.pid sleep 5 #如果不能关闭tomcat时(tomcat有时的bug),调用以下代码# pid=`ps aux |grep "java"|grep "tomcat"|grep -v "grep"|awk '{print $2}'` if [ "$pid" = "" ] ; then echo "tomcat is shutdown now!" else echo "force kill tomcat'pid $pid now" kill -9 $pid fi } status() { ps -ef | grep java | grep "$TOMCAT_HOME" | grep 'catalina.startup.Bootstrap start' | awk '{print $2}' | tr '\n' ' ' >/tmp/tomcat_process_count.txt read line < /tmp/tomcat_process_count.txt if [ $line -gt 0 ]; then echo -n "tomcatd ( pid " ps -ef | grep java | grep "$TOMCAT_HOME" | grep 'catalina.startup.Bootstrap start' | awk '{print $2}' | tr '\n' ' ' echo ") is running..." else echo "Tomcat is stopped" fi } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; status) status ;; *) echo "Usage: tomcatd {start|stop|restart|status}" exit 1 esac
- shell编程,调整谦让度,调整脚本运行的优先级nice,renice
- shell编程,正则表达式BRE模式,ERE模式
- shell编程,定时运行作业at,atq,atrm,一次性定时任务
- shell编程,桌面环境中的脚本,select命令,dialog包的使用,kdialog、gdialog、zenity
- shell编程,查看退出状态码$?和exit命令
- shell编程,定期执行脚本cron,crontab,anacron,定时任务
- shell账号密码登陆
- xshell设置字符集
- shell编程,if-then、else,case,数值、字符串、文件类型比较检测,[ ],(()),[[ ]]
- shell 删除空目录