Java在linux使用.sh启动程序
一、以命令方式启动jar包
1、方式一
java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
2、方式二
// 那如何让窗口不锁定? java -jar XXX.jar & // &代表在后台运行
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。
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、停止脚本
**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 700 xx.sh #授权命令