您的当前位置:首页正文

springBoot使用sh脚本启动服务

来源:一二三四网
springBoot使⽤sh脚本启动服务

在当前⽬录中 java -jar xxx.jar 这仅仅是前台运⾏退出就失效后台运⾏:nohup java -jar xxx.jar > catalina.out 2>&1 &命令详解:

nohup:不挂断地运⾏命令,退出帐户之后继续运⾏相应的进程。

nohup java -jar xxx.jar >⽇志⽂件名.log:是nohup把command的输出重定向到当前⽬录的指定的“⽇志⽂件名.log”⽂件中,即输出内容不打印到屏幕上,

⽽是输出到”⽇志⽂件名.log”⽂件中。不指定⽂件名会在当前⽬录创建nohup.out,如果当前⽬录的 nohup.out ⽂件不可写,输出重定向到 $HOME/nohup.out ⽂件中。如果没有⽂件能创建或打开以⽤于追加,那么 Command 参数指定的命令不可调⽤。

2>&1:2就是标准错误,1是标准输出,该命令相当于把标准错误重定向到标准输出么。这⾥&相当于标准错误等效于标准输出,

即把标准错误和标准输出同时输出到指定的“⽇志⽂件名.log”⽂件中。

java -jar ⾃⼰的springboot项⽬.jar:执⾏springboot的项⽬,如果单单只执⾏该命令,linux只会短暂的运⾏该项⽬,当退出控制台后会⾃动关闭该项⽬。最后的&:让该作业在后台运⾏。

当我们需要停⽌运⾏的时候 每次都要通过 jps命令查找当前服务进程号这样⼀次两次还能接受 频繁的话,就不太友好了

⾃定义脚本⽂件wss.sh

#!/bin/bash

#这⾥可替换为你⾃⼰的执⾏程序,其他代码⽆需更改APP_NAME=xxx.jar #你的jar包

#使⽤说明,⽤来提⽰输⼊参数usage() {

echo \"Usage: sh wss.sh [start|stop|restart|status]\"exit 1}

#检查程序是否在运⾏is_exist(){

pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `#如果不存在返回1,存在返回0if [ -z \"${pid}\" ]; thenreturn 1elsereturn 0fi}

#启动⽅法start(){is_exist

if [ $? -eq \"0\" ]; then

echo \"${APP_NAME} is already running. pid=${pid} .\"else

nohup java -jar $APP_NAME > catalina.out 2>&1 &echo \"${APP_NAME} start success\"fi}

#停⽌⽅法stop(){is_exist

if [ $? -eq \"0\" ]; thenkill -9 $pid

else

echo \"${APP_NAME} is not running\"fi}

#输出运⾏状态status(){is_exist

if [ $? -eq \"0\" ]; then

echo \"${APP_NAME} is running. Pid is ${pid}\"else

echo \"${APP_NAME} is NOT running.\"fi}#重启restart(){stopstart}

#根据输⼊参数,选择执⾏对应⽅法,不输⼊则执⾏使⽤说明case \"$1\" in\"start\")start;;

\"stop\")stop;;

\"status\")status;;

\"restart\")restart;;*)usage;;esac

进⼊到⽬录使⽤ sh wss.sh start 启动sh wss.sh stop 停⽌

因篇幅问题不能全部显示,请点此查看更多更全内容

Top