本文为博主原创,转载请注明出处:
1. 以tomcat 为例,编写启动脚本:
#!/bin/sh bin=$(cd `dirname $0`; pwd) pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}') if [ -n "${pid}" ]; then echo "Shutdown..." sh ${bin}/shutdown.sh sleep 3 pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}') if [ -n "${pid}" ]; then kill -9 ${pid} sleep 1 fi fi echo "Startup..." sh ${bin}/startup.sh if [ "$1" = "-v" ]; then tail -f ${bin}/../logs/catalina.out fi
该脚本实现的逻辑为:先读取当前restart.sh 脚本所在的路径,并 过滤 tomcat 的进程,并判断tomcat 进程是否存在,如果存在,则先调用 shutdown.sh ,停止进程,3s 之后并重新过滤检查tomcat服务进程是否存在,如果依然存在,则使用 kill -9 的方式杀掉进程。之后开始调用启动脚本,并判断执行 restart.sh 脚本时,是否传参 -v ,如果传参 -v , 则遍历当前的实时日志。
2. 停止服务的脚本编写示例
#!/bin/bash for pickid in `ps -o pid,args -u $USER|grep tomcat|grep -v grep |awk '{print $1}'` do echo "kill tomcat ${pickid}" kill -15 $pickid done
该脚本的逻辑为 循环遍历所有的tomcat 的进程,并循环 kill -15 的方式停止进程。