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")
}
}



