linux shell 启动、停止、重启、清除日志 脚本

4 篇文章 0 订阅

采用替换jar包启动方式:如sdzk-backend-2.0.jar 将运行sdzk-backend-2.0_function.jar
方法说明: 
init 创建初始目录(back logs)第一次运行前执行或自行创建对应目录
restart 重启(备份并替换新的jar包)
stop 停止 status 运行状态 
start 重启 
autostart加入linux定时任务防止jar包异常停止
remoteRestart 远程主机启动
remoteAllRestart 远程和本地全部启动 (现在只支持远程一台服务器启动)

获取进程id有两种方式:
按端口获取如8081
netstat -tunlp | grep 8081 | awk '{print $7}'|tr -cd "[0-9]"
按名称获取collector-2.0-fat.jar
/root/jdk1.8.0_172/bin/jps -l| awk '{print $2,$1}'|grep -i '^collector-2.0-fat.jar'|awk '{print $2}'
`ps -ef |grep java|grep collector-2.0-fat.jar|awk '{print $2}'`
脚本使用,按情况替换以下三个变量即可使用
functionEnv 运行profile文件
oprationAdress 运行地址
project jar包名称

#!/bin/sh

if [ "$1" = "" ];
then
	echo -e "请输入操作:  {init|start|autostart|stop|restart|status|remoteRestart|remoteAllRestart}"    
	exit 
fi

functionflag=_function
functionEnv=154

project=sdzk-backend-2.0.jar
originalProject=${project%.jar}${functionflag}.jar

oprationAdress=/root/api/
back=${oprationAdress}back/
logs=${oprationAdress}logs/

remoteIp=47.113.188.227

params2=$2

cd ${oprationAdress}

#pid=$(jps  -l| awk '{print $2,$1}'|grep -i '^'${originalProject}|awk '{print $2}')
pid=`ps -ef |grep java|grep ${originalProject}|awk '{print $2}'`

stop(){
if [ "$pid" =  "" ]; then
    echo "no Start"
else
    echo "shutdown ${project} begin"
    kill -9  $pid
    sleep 10
    echo "shutdown ${project} end"
fi

}

star(){

if [ ! -f $originalProject ];then
       echo "not exists jar not start"
fi

if [ ! -z "$params2"  ];then
        functionEnv=$params2
fi

echo "function env: "${functionEnv}

echo $pid
nohup java -jar -Xms256m -Xmx2048m   $originalProject --spring.profiles.active=${functionEnv} >/dev/null 2>&1 &
echo $!
}

status(){
if [ "$pid" =  "" ]; then
	echo "no start"
else
	echo $pid
fi

}

autostart(){
if [ "$pid" =  "" ]; then
star
fi
}


start(){
stop
star

}

restart(){

if [ ! -f $project ];then
        echo " no exist jar"
        exit
else
        echo "exist jar restart"
fi

backups

stop
mv $project $originalProject
echo "replace jar"

if [ $? -ne 0 ]; then
    echo "failed"
else
  star

fi

}

backups(){
if [ -f $originalProject ];then
       cp $originalProject $back${originalProject%''${functionflag}*}_$(date +%Y%m%d_%H:%M:%S)_back.jar
       echo "jar backup"
fi
}


remoteRestart(){
scp -rp ${oprationAdress}${project} $remoteIp:${oprationAdress}
ssh $remoteIp "$0 restart"
}


remoteAllRestart(){
remoteRestart
restart
}

init(){

if [ -d $back ];then
  	echo "exist ${back}"
else
  	mkdir $back
 	 echo "create ${back}"
fi

if [ -d $logs ];then
        echo "exist ${logs}"
else
        mkdir $logs
         echo "create ${logs}"
fi


}

case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  "remoteRestart")
    remoteRestart
    ;;
  "remoteAllRestart")
    remoteAllRestart
    ;; 
 "autostart")
    autostart
    ;;
  "init")
    init
    ;;
  *)
    usage
    ;;
esac

清除需要加入到定时器 清除jar包备份和日志文件两种方式

#!/bin/bash


SERVERS=(/root/api/back/ /data/backend-api-2.0/)

for i in ${SERVERS[@]}
do
	echo "--"$i
	find $i -mtime +30  -exec rm -rf {} \;
done
#!/bin/sh
cd /root/collector/collector_back
currentTime=$(date +%Y%m%d)
for shname in `ls collector-2.0-fat_*_back.jar`
do 
     name=${shname:18:8}
     beforeTime=$(date -d"10 day $name" +%Y%m%d)
     let value=$beforeTime-$currentTime
     
     if [ $value -lt  0 ];then
	echo "delete file :"$shname
	rm -f $shname
     else
        echo $shname
     fi
done

cd /root/collector/logs
for logname in `ls lsp_app.log.*`
do
    logTime=${logname:12:8}
    logBTime=$(date -d"2 day $logTime" +%Y%m%d)
    let logValue=$logBTime-$currentTime
   if [ $logValue -lt  0 ];then
	echo "delete log :"$logname
	rm -f $logname
   else
	echo $logname
   fi
done

cd /root/collector
echo "" > /root/collector/nohup.out

 

windows 清除日志脚本

set srcDir="D:\ideaWorkspace\bjsdzk-collector\logs"
set daysAgo=1
forfiles /p %srcDir% /s /m lsp_*.log  /d -%daysAgo% /c "cmd /c del @path"

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值