原来的应用服务都是通过Dcoker部署的,因为种种原因临时需要把部署到Docker里面的应用服务迁移出来,临时写个脚本管理服务进程的起停,以及状态的简单显示。
服务进程启动
应用服务都是基于spring boot框架开发的,启动方式都是一致的,便与写成统一启动命令格式。
服务进程PID的获取
获得应用服务进程的PID,用到的shell命令还是那几个老朋友: ps awk grep 。这些命令出镜率很高。
ps -ef | grep 2}'
通过两次grep 基本就能获得到唯一的进程PID了。
进程状态的获取
如果想获得更多的进程信息 ,可以通过ps aux 的方式获得更多的信息。
停止服务进程
如果想停止这个进程 ,可以通过管道符经PID传递给xargs kill -9
代码参考
function managementApp(){
TIME=`date "+%Y-%m-%d %H:%M:%S"`
echo "$TIME $3 $1 $2." | tee -a /opt/logs/apps.log
if [ $3 = 'status' ];
then
PID=`ps -ef | grep $2 | grep java | awk '{ print $2}'`
if [ ! $PID ];
then
echo "$1 $2 not exist" | tee -a /opt/logs/apps.log
else
ps aux | grep $2 | grep java | awk '{ print "%CPU:"$3"; %MEM:"$4"; RSS:"$6"KB." }' | tee -a /opt/logs/apps.log
fi
elif [ $3 = 'stop' ];
then
PID=`ps -ef | grep $2 | grep java | awk '{ print $2}'`
if [ ! $PID ];
then
echo "$1 $2 already stop" | tee -a /opt/logs/apps.log
else
ps -ef | grep $2 | grep java | awk '{ print $2}' | xargs kill -9
fi
elif [ $3 = 'start' ];
then
nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >>$2.outfile 2>&1 &
elif [ $3 = 'restart' ];
then
PID=`ps -ef | grep $2 | grep java | awk '{ print $2}'`
if [ $PID ];
then
ps -ef | grep $2 | grep java | awk '{ print $2}' | xargs kill -9
fi
nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >$2.outfile 2>&1 &
elif [ $3 = 'watch' ];
then
PID=`ps -ef | grep $2 | grep java | awk '{ print $2}'`
if [ ! $PID ];
then
echo "Warning. $1 $2 not exist.Must start this app." | tee -a /opt/logs/apps.log
nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >> $2.outfile 2>&1 &
else
echo "$1 $2 is normal. " | tee -a /opt/logs/apps.log
ps aux | grep $2 | grep java | awk '{ print "%CPU:"$3"; %MEM:"$4"; RSS:"$6$6"KB." }' | tee -a /opt/logs/apps.log
fi
else
manual
fi
}
网友评论