2021-12-24补充:
之前遇到Jenkins和gitlabci 导致运行jar成功后,一直阻塞,jenkins任务构建部署成功不会挂断。
原因是:之前没接触过这块运维,简单通过 java -jar 不加任何参数启动程序,程序不会挂断。就导致上面的问题。
1、执行jar会遇到无法 无法结束的情况必须要加 2>&1nohup java -jar -Xms100m -Xmx100m /root/mybatis-plus-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
2、jps显示的java进程名称为jar如何解决只要把 java -jar xxx.jar 的 xxx.jar 的位置是 绝对位置就可以了3、查看jar 包进程ps aux|grep jar包名称.jar4、如何正确启动jar1、当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出java -jar xxxxx.jar2、当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。java -jar xxxxx.jar &3、( 常用 )意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行注意:无论怎么执行。最后面都要加 &我因为忘记加 & 导致 shell一直阻塞(一直没找到问题),但是不能只加 &,否则依然会阻塞nohup java -jar xxxxxx.jar &生成日志 在尾后追加 > out.log &demo1 保留日志 (会阻塞)nohup java -jar wx-scheduling-0.0.1-SNAPSHOT.jar > out.log &demo2 放弃标准输入 (会阻塞)nohup java -jar wx-scheduling-0.0.1-SNAPSHOT.jar >/dev/null &demo3 放弃标准输入和标准错误输出 (这是正确的方案)(不会阻塞)不保留日志nohup java -jar wx-scheduling-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &保留日志nohup java -jar wx-scheduling-0.0.1-SNAPSHOT.jar > out.log 2>&1 &设置jvm参数nohup java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar 你的jar包 >/dev/null &
Linux 运行jar包命令如下:
1.查看进程:
ps aux |grep xxx.jar
ps -ef |grep xx.jar
补充:
1.jps
控制台列举出的就是当前运行的java进程
2.查看某个端口是否被占用:
netstat -anp|grep 端口号
2.杀死进程
kill -9 22222(进程id)
当然也可以用kill -15
3.区别如下:
kill -9 PID 是操作系统从内核级别强制杀死一个进程.
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在执行时,应用程序是没有时间进行"准备工作"的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。
方式一:
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
补充:
bg
将一个在后台暂停的命令,变成继续执行
ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118752.html