您的位置:首页 > 运维架构 > Linux

linux 多jetty启动脚本

2012-09-17 14:54 190 查看
这个脚本是通过命令的方式来启动不同的jetty

假设这个文件名为jetty-root.sh 放在/home/chris 下 我们可以通过ln命令设置快捷方式jj

ln -s /home/chris/jetty-root.sh /usr/bin/jj

/data/app/jetty-chris 的启动命令为 jj start chris  停止命令为 jj stop chris  查看日志jj logf chris

/data/app/jetty-hudson 的启动命令为 jj start hudson 停止命令为 jj stop hudson  查看日志jj logf hudson

#!/bin/bash

ME=`basename $0`
ArgCount=$#
# 启动命令 stop | start | log | logn | logf
CMD=$1
# 启动jetty的唯一标识 目录如果为jetty-chris则启动这个jetty 使用  start chris
KEY=$2
NOWDAY=`date +%Y`_`date +%m`_`date +%d`
WHO=`whoami`

if [ ! $ArgCount -eq 2 ]; then
echo "    Arg count must be 2"
echo "        {stop | start | log | logn | logf} {key}"
echo "        log is cat log file"
echo "        logn is tail log file last 1000 line"
echo "        logf is tail -f log file"
exit
fi

if [ $CMD != "start" -a $CMD != "stop" -a $CMD != "log" -a $CMD != "logf" -a $CMD != "logn" ]; then
echo "arg 1 must be start or stop or log or logf or logn"
exit
fi
#要同时启动多个jetty 要修改对应jetty.xml的端口 避免出现端口相同的情况
XMLFILE="/data/app/jetty-$KEY/etc/jetty.xml"

echo -n "XML file $XMLFILE"
if [ -f "$XMLFILE" ]; then
echo " is exist."
else
echo " is NOT exist!"
exit
fi

JAVA_HOME=/data/app/java
CLASSPATH=/data/app/java/lib/dt.jar:/data/app/java/lib/tools.jar
export JAVA_HOME CLASSPATH
export LANG=zh_CN.UTF-8

export JETTY_HOME=/data/app/jetty-$KEY
export JETTY_RUN=/data/app/jetty-$KEY/logs
export JETTY_LOGS=/data/app/jetty-$KEY/logs
export JETTY_ARGS=/data/app/jetty-$KEY/etc/jetty-logging.xml
export JAVA_OPTIONS='-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:PermSize=64M -XX:MaxPermSize=128M -Xmx2048m -DOPTIONS=server'
PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}' | wc -l`
LOGFILE=`ls -t $JETTY_HOME/logs/*.stderrout.log | awk 'NR==1'`

case $CMD in
logf)
tail -f $LOGFILE
;;
logn)
tail -n1000 $LOGFILE
;;
log)
more $LOGFILE
;;
start)

if [ "$PIDCOUNT" -gt 1 -o "$PIDCOUNT" -eq 1 ]; then
echo "There are too many process :"
ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME
exit 1
fi
if [ "$PIDCOUNT" -eq 0 ]; then
echo "Let's start it......"
/data/app/jetty-$KEY/bin/jetty.sh start
sleep 1
echo "It's stared"
exit 0
fi
;;
stop)
if [ "$PIDCOUNT" -gt 1 ]; then
echo "There are too many process :"
ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME
exit 1
fi

if [ "$PIDCOUNT" -eq 0 ]; then
echo "It had been down!"
exit 1
fi

if [ "$PIDCOUNT" -eq 1 ]; then
echo "Let's stop it......"
PID=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}'`
kill $PID
echo "Sending STOP ... Waiting ..."

for i in {60..0}; do
PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' |  grep -v $ME | awk '{print $2}' | wc -l`
if [ "$PIDCOUNT" -eq 1 ]; then
echo "It's running yet...$i"
sleep 1
else
echo "$JettyHome has been down"
exit
fi
done

PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME |  awk '{print $2}' | wc -l`
if [ "$PIDCOUNT" -eq 1 ]; then
PID=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}'`
kill -9 $PID
echo "Force to kill -9 pid:$PID"
echo "sleep 5 second"
sleep 5
echo "$PID has been down"
exit
fi

fi

;;
esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux hudson cmd kill file date