在Java中使用杀命令时需要注意哪些事项?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
杀死在linux系统中是用于杀死进程。
杀死pid (. .]
引用>
杀命令可将指定的信号发送给相应的进程或工作。杀命令默认使用信号为15日,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9日强制杀死进程或作业。
因此,如果确保将进程杀死,可以使用9参数
kill - 9 pid (. .]
引用>
<强> linux中常见的信号强>
, 1,,SIGHUP ,,,,,,,,,,,挂起进程
, 2,,SIGINT ,,,,,,,,,,,,,终止进程
, 3,,SIGGQUIT,停止进程
, 9,,SIGKILL,无条件终止进程
15,SIGTERM ,,,,,,,,尽可能终止进程
17,SIGSTOP ,,,,,,,,,无条件停止进程,但不是终止
18,SIGTSTP停止或者暂停进程,但不终止进程
19 SIGCONT继续运行停止的进程
<强>在Java中的应用强>
创建一个SpringBoot的网络应用
启动类如下,添加了一个钩子函数,当进程关闭时,将会调用该钩子函数。
@SpringBootApplication public class  WebApplication { ,public static  void 主要(String 参数[]){ ,SpringApplication.run (WebApplication.class, args); ,Runtime.getRuntime () .addShutdownHook (new 线程(){ ,@Override ,public void  run (), { ,System.out.println (“do  ShutdownHook ..........,“); ,} ,}); ,} }使用maven打包。
mvn 包<强>测试杀死3
强>启动应用
这里注意,如果使用相对路径启动应用,则jps看到的进程名称为jar,使用绝对路径如下则显示完整的jar名称:web - 1.0。jar .
java -jar ~//web/目标/web -一个项目1.0。jar查看进程pid
lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元jps |, grep 网络 21060,web - 1.0。jar使用杀死3,
lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元kill 3, 21060可以看到启动界面打印了Java应用的堆栈信息。打印的是收信到3号时刻的线程信息。
如果使用以下方式启动应用
nohup java -jar ~//web/目标/web-1.0.jar 一个项目,lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元ls -l | grep nohup.out - - - - - - -女人;1,lgj lgj 22811, Jun 9, 00:41 nohup.out可以看到启动所在的目录多了一个文件nohup。出来。该文件记录了应用启动运行过程中的日志。
nohup命令,,
,表示以后台方式运行应用。但如果退出关闭启动的控制台,进程将会停止。
nohup +,也是以后台方式运行应用,但是退出关闭启动的控制台,进程不会停止。且进程日志将会输出到nohup。中。
此时使用杀死3。打印的线程信息可以到该nohup。出中查看。
<强>测试杀和杀9 强>
启动应用
java -jar ~//web/目标/web -一个项目1.0。jar使用杀死pid杀死进程
lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元jps |, grep 网络 21470,web-1.0.jar lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元kill 21470年 lgj@lgj-Lenovo-G470: ~//web/一个项目目标$可以看到输出日志中输出了钩子函数中所打印的
做ShutdownHook ..........
2019-06-09 01:18:28.610 信息21470 - - - - - - (,,,,,,,,,主要]com.demo.web.WebApplication ,,,,,,,,,,,,:开始WebApplication 4.585秒(5.274 JVM运行)
引用>
做ShutdownHook ..........
2019-06-09 01:18:41.381 信息21470 - - - - - - (,,,,,Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor :关闭ExecutorService & # 39; applicationTaskExecutor& # 39;
使用kill 9,pid杀死进程
lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元jps |, grep 网络 21568,web-1.0.jar lgj@lgj-Lenovo-G470: ~//web/一个项目目标,美元kill 9, 21568最后的日志并没有输出钩子函数中的内容
在Java中使用杀命令时需要注意哪些事项