Linux 运行jar包命令如下:
方式一:
java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
方式二
java -jar XXX.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
方式三
nohup java -jar XXX.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
方式四
nohup java -jar XXX.jar >temp.txt &
解释下 >temp.txt
command >out.file
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
jobs
那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要 fg + 编号即可。
fg 23
我写的一个若依启动脚本
全部服务启动命令 ruoyicloud.sh -a start -v -2.2.0
单个服务启动命令 ruoyicloud.sh -a start -n ruoyi-getaway -v -2.2.0
全部停止命令 ruoyicloud.sh -a stop -v -2.2.0
单个停止命令 ruoyicloud.sh -a stop -n ruoyi-getaway -v -2.2.0
a=执行方法
n=服务名字
v=服务版本号
ruoyicloud.sh
#!/bin/bash
#执行方法 start|stop
mulu=$(dirname $(readlink -f $0))
a=
# 执行的名字,如果只对某个服务操作需要写服务名字不含版本号和.jar后缀。
n=
#执行版本号执行的时候会拼接成 名字-版本号.jar
v="-2.2.0"
# 'ruoyi-modules-job' 'ruoyi-visual-monitor'
arr=('ruoyi-gateway ruoyi-auth' 'ruoyi-modules-system' 'ruoyi-modules-gen')
while getopts ":v:n:a:" opt
do
case $opt in
n)
n=$OPTARG
arr=($OPTARG)
echo "当前操作应用:$OPTARG"
;;
v)
v=$OPTARG
echo "版本号:$OPTARG"
;;
a)
a=$OPTARG
echo "操作方法:$OPTARG"
;;
?)
echo "未知参数,-v 2.0.0 -n nginx -i start|stop"
exit 1;;
esac
done
function stopjar(){
PID=$(ps -ef | grep $1.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo $1 is already stopped
else
echo "stop $1.jar kill -9 $PID"
kill -9 $PID
fi
}
function startjar(){
nohup java -Dfile.encoding=utf-8 -jar $1.jar >$1.out 2>&1 &
}
function stop(){
length=${#arr}
echo "停止服务:$length"
# for 遍历
for item in ${arr[*]}
do
echo "stop" $item$v
stopjar $item$v
done
}
function start(){
length=${#arr}
echo "开始服务:$length"
# for 遍历
for item in ${arr[*]}
do
echo "start" $mulu/$item$v
startjar $mulu/$item$v
done
}
echo "$a"
$a