#!/bin/sh # PS some OS location: /usr/sbin/cronolog OR /usr/local/sbin/cronolog OR /usr/bin/cronolog(ubuntu) CRONOLOG_PATH=/usr/local/sbin/cronolog if [ ! -f "$CRONOLOG_PATH" ]; then CRONOLOG_PATH=/usr/sbin/cronolog if [ ! -f "$CRONOLOG_PATH" ]; then CRONOLOG_PATH=/usr/bin/cronolog fi; fi; # 当前脚本所在目录 SERVER=$(cd `dirname $0`; pwd) cd $SERVER # 文件全路径 FULL_PATH=$SERVER/elastic-publish-service-1.0.0.jar # 程序的名字,不包括版本号,一般JAR包文件名为: $APP_SIGNATURE-1.0.0.jar ,备份用. APP_SIGNATURE=elastic-publish-service # 运行参数,如: -Xmx800m RUN_PARAM= # 组合命令,如果是Java,运行其他程序,改这里,如其他运行: ./frpc -c frpc.ini RUN_COMMAND="java -jar $FULL_PATH" # 运行程序的PID文件名 PID_FILE_NAME=.pid # 程序运行日志文件 APP_LOG_FILE=application.log # 检查文件是否存在, if [ ! -f "$FULL_PATH" ];then echo "file = [$FULL_PATH] not found..." exit 0 fi NOHUP_PREFIX=logs/nohup_ res="" if [ $# -eq 0 ] ; then echo "Usage: {start|stop|restart|fstop|np|nph|al|alh}" else case "$1" in start) # kill res=`ps aux | grep "$SERVER/$APP_SIGNATURE" | grep -v "grep" | awk '{print $2}'` if [ -n "$res" ];then kill -9 $(ps aux | grep "$SERVER/$APP_SIGNATURE" | grep -v "grep" | awk '{print $2}') sleep 1 fi nohup $RUN_COMMAND $RUN_PARAM 2>&1 | $CRONOLOG_PATH ./$NOHUP_PREFIX%Y%m%d.log & echo $[$!-1] > $SERVER/$PID_FILE_NAME ;; stop) kill `cat $SERVER/$PID_FILE_NAME` rm -rf $SERVER/$PID_FILE_NAME ;; restart) kill `cat $SERVER/$PID_FILE_NAME` rm -rf $SERVER/$PID_FILE_NAME sleep 1 nohup $RUN_COMMAND $RUN_PARAM 2>&1 | $CRONOLOG_PATH ./$NOHUP_PREFIX%Y%m%d.log & echo $[$!-1] > $SERVER/$PID_FILE_NAME ;; fstop) kill -9 `cat $SERVER/$PID_FILE_NAME` rm -rf $SERVER/$PID_FILE_NAME ;; np) # echo $2 DATE=$(date +%Y%m%d) tail -f "./$NOHUP_PREFIX$DATE.log" | grep "$2" ;; nph) # echo $2 DATE=$(date +%Y%m%d) tail -f "./$NOHUP_PREFIX$DATE.log" | perl -pe 's/('$2')/\e[1;31m$1\e[0m/g' ;; al) tail -f "./logs/$APP_LOG_FILE" | grep "$2" ;; alh) tail -f "./logs/$APP_LOG_FILE" | perl -pe 's/('$2')/\e[1;31m$1\e[0m/g' ;; backup) BACKUP_DATE=$(date +%Y%m%d%H%M) BACKUP_FOLDER=$SERVER/backup if [ ! -d "$BACKUP_FOLDER" ];then mkdir $BACKUP_FOLDER fi CU_BACK_UP=$BACKUP_FOLDER/$BACKUP_DATE if [ ! -d "$CU_BACK_UP" ];then mkdir $CU_BACK_UP fi cp $SERVER/$APP_SIGNATURE*.jar $CU_BACK_UP/ cp -R $SERVER/lib $CU_BACK_UP/ cp -R $SERVER/config $CU_BACK_UP/ ;; rollback) if [ $# -eq 2 ] ; then ROLLBACK_FOLDER=$SERVER/backup/$2 echo "rollback version:"$ROLLBACK_FOLDER if [ ! -d "$ROLLBACK_FOLDER" ];then echo "rollback version not found in file system. "$ROLLBACK_FOLDER exit 0 fi rm -rf $SERVER/$APP_SIGNATURE*.jar rm -rf $SERVER/lib rm -rf $SERVER/config cp $ROLLBACK_FOLDER/$APP_SIGNATURE*.jar $SERVER cp -R $ROLLBACK_FOLDER/lib $SERVER/lib cp -R $ROLLBACK_FOLDER/config $SERVER/config else echo "not input rollback version" fi; ;; *) echo "Usage: {start|stop|restart|fstop|np|nph}" ;; esac fi; exit 0