linux后台运行jar包脚本命令
在linux环境下,通过nohup &
命令来后台运行jar包,并通过命令参数来设置springboot的profile,代码如下:
nohup java -jar blog-v2.jar --spring.profiles.active=server >/dev/null 2>&1 &
其中,blog-v2.jar是jar包的名称。--spring.profiles.active=server
是设置springboot的profile。>/dev/null 2>&1
是把springboot的控制台输出(比如System.out.println
)打印到一个不存在的路径上,这样做是为了执行该脚本后避免还得多次回车才能退出。
linux自动杀死jar进程并重启命令
日常部署中,我们最常用的操作就是kill -9
杀死当前jar包进程,然后重启。命令如下:
PidArr=`ps -ef|grep blog-v2.jar|grep -v 'color'|grep -v 'grep' |awk '{print $2}'`
for PID in $PidArr; do
if [ $PID -ge 0 ]
then
echo "jar pid is:$PID, ready kill jar"
kill -9 $PID
else
echo "jar is not running, ready start it"
fi
done
nohup java -jar blog-v2.jar --spring.profiles.active=server >/dev/null 2>&1 &
其中,blog-v2.jar
是jar包的名称。代码的大概意思是,通过ps grep
命令查找到当前正在运行的jar包进程,然后kill -9
杀死进程,然后使用nohup
重新运行该jar包。
整合git,实现推送git自动重启
思路是通过gitlab
或者github
的webhook,每次commit,gitlab都会发起一次http请求,请求设置的webhook。在服务器上启动一个nginx接收该请求,每次收到请求就重新从git上clone
代码,然后执行上面的重启命令。
其中,nginx收到请求后,可以通过lua
脚本来执行sh
脚本,代码如下:
location /my-website {
content_by_lua_block {
os.execute("/bin/myShellScript.sh")
}
}