应客户要求需要对jar包分别配置启动、停止、校验三种可执行脚本。执行成功在日志文件输出0,失败输出1。
- 启动脚本
#!/bin/bash
JAR_PATH=/opt/project/xxx/
JAR_NAME=xxx.jar
LOG_PATH=${JAR_PATH}xxx.result
echo "$(date "+%Y-%m-%d_%H:%M:%S")" >>$LOG_PATH
#获得程序PID
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
#判断程序是否在运行中
if [ -z $pid ]; then
#启动程序
nohup java -jar -Xmx12288M -Xms10240M $JAR_PATH$JAR_NAME > log.file 2>&1 &
fi
#再次获得程序PID校验程序是否启动成功
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
if [ -z $pid ]; then
statusid=1
else
statusid=0
fi
#向日志文件中写入当前时间 操作用户 执行状态
echo "$(date "+%Y-%m-%d_%H:%M:%S") $USER ${statusid}" >>$LOG_PATH
- 停止脚本
#!/bin/bash
JAR_NAME="xxx.jar"
LOG_PATH=/opt/project/xxx/xxx.result
echo "$(date "+%Y-%m-%d_%H:%M:%S")" >>$LOG_PATH
#得到程序PID
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
#判断PID存在
if [ ! -z $pid ]; then
kill -9 $pid
fi
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
#判断PID不存在
if [ -z $pid ]; then
statusid=0
else
statusid=1
fi
echo "$(date "+%Y-%m-%d_%H:%M:%S") $USER ${statusid}" >>$LOG_PATH
- 校验脚本
#!/bin/bash
JAR_NAME="xxx.jar"
LOG_PATH=/opt/project/xxx/xxx.result
echo "$(date "+%Y-%m-%d_%H:%M:%S")" >>$LOG_PATH
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
if [ -z $pid ];then
statusid=1
else
statusid=0
fi
echo "$(date "+%Y-%m-%d_%H:%M:%S") $USER ${statusid}" >>$LOG_PATH
若操作其他程序,替换JAR_NAME参数即可