# 方便jenkins通过ssh部署,需要修改sudoers配置其不必打开一个tty去操作,如果用不到,可以将其注释/删除掉
#!/bin/bash
PRO=`cat /etc/sudoers | grep "Defaults    requiretty" | md5sum | awk '{print $1}'`
PRO_DEF=`echo "# Defaults    requiretty" | md5sum | awk '{print $1}'`
[ ${PRO} != ${PRO_DEF} ] && sed -i 's\Defaults    requiretty\# Defaults    requiretty\' /etc/sudoers
以下是脚本内容
#!/bin/bash
#chkconfig 2345 10 90
# description: start and stop tomcat service scripts
# author : zhangxiaolong 
# email : [email protected]

# 添加CATALINA_HOME变量和JDK变量,更换项目只需要更换此变量即可,如果今后一个应用一台服务器,可以使用一样的名字来操作
CATALINA_HOME=/opt/tomcat

# 由于catalina.sh使用了许多系统自定义变量,并且程序开发过程中也有可能反复调用系统变量,因此,在此处需要source系统的环境配置,以免程序在调用系统默认变量的时候出问题
source /etc/profile

# 注意,本脚本是根据catalina.pid进行操作的,如果没有,请在catalina.sh或者setenv.sh里的128行至130行左右(适用于tomcat7.0.65)加入以下内容:
# [ -n "$CATALINA_HOME" ] && CATALINA_PID=$CATALINA_HOME/work/catalina.pid

# 启动
start() {
        if [ -z `ps aux | grep $CATALINA_HOME | grep -v grep | awk '{print $2}'` ];then
            if [ -f $CATALINA_HOME/work/catalina.pid ]; then
                rm -rf $CATALINA_HOME/work/catalina.pid;
            fi
            sh $CATALINA_HOME/bin/startup.sh #错误已修订
        else
            echo "$CATALINA_HOME service has start already!"
        fi
}
# 关闭
stop() {
    if [ -f $CATALINA_HOME/work/catalina.pid ]; then
        PID=`cat $CATALINA_HOME/work/catalina.pid`;
        rm -rf $CATALINA_HOME/work/catalina.pid;
        kill -9 $PID;
        echo "$CATALINA_HOME is stopped!"
    fi
}
# 查看状态
status() {
    if [ -z `ps aux | grep $CATALINA_HOME | grep -v grep | awk '{print $2}'` ];then
        if [ ! -f $CATALINA_HOME/work/catalina.pid ]; then
            echo "$CATALINA_HOME is not running!"
        else
            echo "$CATALINA_HOME is not running ,but pid file find!";
            echo "system will removed the pid file";
            rm -rf $CATALINA_HOME/work/catalina.pid;
        fi
    else
        PID=`cat $CATALINA_HOME/work/catalina.pid`
        echo "$CATALINA_HOME is running, pid is $PID!"
    fi
}
case "$1" in
    start)
        start;;
    stop)
        stop;;
    status)
        status;;
    restart)
        stop;
        sleep 1;
        start;;
    *)
        echo $"USEAGE: $0 {start|stop|status|restart}";;
esac