文章目录
- 1.启动jar包命令
- 2.查看正在运行的jar
- 3.杀死Java进程
1.启动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 &
或
//不会阻塞
nohup java -jar XXX.jar >temp.txt 2>&1 &
例子
nohup java -jar -Xms64m -Xmx512m -Dlegox.env=DEFAULT_GROUP -Dlegox.nacos.address=10.20.105.21:8848 /opt/env/jars/legox-power-bpm-release-0.0.1-SNAPSHOT.jar > ./logs/power-bpm.log 2>&1 &
2>&1:前面的2和1 的意思如下:
0 标准输入(一般是键盘)
1 标准输出(一般是显示屏,是用户终端控制台)
2 标准错误(错误信息输出)
command >out.file 是将command的输出重定向到out.file文件,输出内容不打印到屏幕上,而是输出到out.file文件中。
2>&1 是将标准出错重定向到标准输出,因为标准输出已经重定向到了out.file文件,所以标准出错也输出到out.file文件中。
最后一个&, 是让该命令在后台执行。
2.查看正在运行的jar
1.ps aux
ps aux | grep xx.jar
aux的解释
a 显示所有用户的进程(show processes for all users)
u 显示用户(display the process’s user/owner)
x 显示无控制终端的进程(also show processes not attached to a terminal)
2.ps -ef
ps -ef |grep xx.jar
ef 的解释
ps -ef 是以System V方式显示,该种方式比BSD方式显示的多
e 显示所有用户的进程(all processes)此参数的效果和指定"a"参数相同
f 用ASCII字符显示树状结构,表达程序间的相互关系(ASCII art forest)
3.jps
jps
jps的解释
控制台列举出的就是当前运行的java进程
3.杀死Java进程
1.kill -9 (进程id)
kill -9 PID 是操作系统从内核级别强制杀死一个进程.
2.kill -15 (进程id)
kill -15 PID 可以理解为操作系统发送一个通知告诉应用主动关闭
当使用kill -15时,系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该信号后,具体要如何处理是自己可以决定的。
这时候,应用程序可以选择:
1、立即停止程序
2、释放响应资源后停止程序
3、忽略该信号,继续执行程序
因为kill -15信号只是通知对应的进程要进行"安全、干净的退出",程序接到信号之后,退出前一般会进行一些"准备工作",如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。这也就是为什么我们有的时候使用kill命令是没办法"杀死"应用的原因,因为默认的kill信号是SIGTERM(15),而SIGTERM(15)的信号是可以被阻塞和忽略的。和kill -15相比,kill -9就相对强硬一点,系统会发出SIGKILL信号,他要求接收到该信号的程序应该立即结束运行,不能被阻塞或者忽略。所以,相比于kill -15命令,kill -9在执行时,应用程序是没有时间进行"准备工作"的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。