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文件。
该文件中存放的就是该项目的启动日志以及运行日志,通过在控制台命令tail -f nohup.out可以进行检测日志信息。
如果我们以第四种方式启动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了