Linux环境下以命令和脚本方式启动jar包

一、以命令方式启动jar包

1、方式一

java -jar XXX.jar

特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。

2、方式二

// 那如何让窗口不锁定?
java -jar XXX.jar &
// &代表在后台运行

特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。 

3、方式三

// 继续改进,如何让窗口关闭时,程序仍然运行?
nohup java -jar XXX.jar & 
// nohup 是linux一个命令,意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

特点:当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

4、方式四

nohup java -jar XXX.jar >temp.txt &
// 解释下 >temp.txt 
// command >out.file 
// command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

总结:我们都知道,启动java的java文件会打印一些启动日志以及任务运行文件日志信息,当我们以第三种方式启动java项目时,会自动在该目录下生成一个新的nohup文件。

nohup启动java包命令 nohup命令启动jar_jar启动

该文件中存放的就是该项目的启动日志以及运行日志,通过在控制台命令tail -f nohup.out可以进行检测日志信息。

nohup启动java包命令 nohup命令启动jar_Linux_02

如果我们以第四种方式启动java项目,将日志新存放到特定文件夹中,这样会日志就不能通过tail -f nohup.out监测。

 

二、以脚本方式启动jar包

1、启动脚本

// 新建一个start.sh文件
vim start.sh

// 填写如下脚本信息,修改如下xxx信息即可
#!/bin/bash
nohup java -jar xxx.jar --server.port=xxxx &

// 启动命令
./start.sh

2、停止脚本

// 新建stop.sh文件
vim stop.sh

// 插入如下命令
#!/bin/bash
PID=$(ps -ef | grep xxx.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

// 启动停止脚本
./stop.sh

3、重启脚本

// 新建一个run.sh文件
vim run.sh

// 添加如下命令
#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh

// 开启重启脚本
./run

4、./start或./stop或./run启动报错

报错信息:-bash: ./startup.sh: Permission denied 

问题介绍:这是因为用户没有权限,而导致无法执行。

解决方法:用命令chmod 就在run.sh所在目录下执行。chmod u+x *.sh 这样就ok了