本篇内容主要讲解“怎么理解kill命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解kill命令”吧!kill 命令我们都知道,想要在 Linux 中终止一个进程有两种方式,如果是前台进程可以使用 Ctrl+C 键进行终止;如果是后台进程,那么需要使用kill命令来终止。(其实 Ctrl+C 也是 kill 命令)kill 命令的格式是:其中[参数]是可选的,进程号可以通过 jps/ps/pidof/pstree/top 等工具获取。kill 的命令参数有以下几种:通常情况下,我们使用的 -l(信号)的时候比较多,如我们前文提到的 kill -9 中的 9 就是信号。信号如果没有指定的话,默认会发出终止信号(15)。常用的信号如下:比较常用的就是强制终止信号:9 和终止信号:15,另外,中断信号:2 其实就是我们前文提到的 Ctrl+C 结束前台进程。那么,kill -9 和 kill -15 到底有什么区别呢?该如何选择呢?kill -9 和 kill -15 的区别kill 命令默认的信号就是 15,首先来说一下这个默认的 kill -15 信号。当使用 kill -15 时,系统会发送一个 SIGTERM 的信号给对应的程序。当程序接收到该信号后,具体要如何处理是自己可以决定的。这时候,应用程序可以选择:立即停止程序释放响应资源后停止程序忽略该信号,继续执行程序因为 kill -15 信号只是通知对应的进程要进行”安全、干净的退出”,程序接到信号之后,退出前一般会进行一些”准备工作”,如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在”准备工作”进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。这也就是为什么我们有的时候使用 kill 命令是没办法”杀死”应用的原因,因为默认的 kill 信号是 SIGTERM(15),而 SIGTERM(15) 的信号是可以被阻塞和忽略的。和 kil免费云主机、域名l -15 相比,kill -9 就相对强硬一点,系统会发出 SIGKILL 信号,他要求接收到该信号的程序应该立即结束运行,不能被阻塞或者忽略。所以,相比于 kill -15 命令,kill -9 在执行时,应用程序是没有时间进行”准备工作”的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。Java 是如何处理 SIGTERM(15) 的我们都知道,在 Linux 中,Java 应用是作为一个独立进程运行的,Java程序的终止运行是基于 JVM 的关闭实现的。JVM 关闭方式分为三种:正常关闭:当最后一个非守护线程结束或者调用了 System.exit 或者通过其他特定平台的方法关闭(接收到 SIGINT(2)、SIGTERM(15)信号等)强制关闭:通过调用 Runtime.halt 方法或者是在操作系统中强制 kill(接收到 SIGKILL(9) 信号)异常关闭:运行中遇到 RuntimeException 异常等。JVM 进程在接收到 kill -15 信号通知的时候,是可以做一些清理动作的,比如删除临时文件等。当然,开发者也是可以自定义做一些额外的事情的,比如让 Tomcat 容器停止,让 Dubbo 服务下线等。而这种自定义 JVM 清理动作的方式,是通过 JDK 中提供的 shutdown hook 实现的。JDK 提供了 Java.Runtime.addShutdownHook(Thread hook) 方法,可以注册一个 JVM 关闭的钩子。例子如下:执行命令:控制台输出内容:可以看到,当我们使用 kill(默认 kill -15)关闭进程的时候,程序会先执行我注册的 shutdownHook,然后再退出,并且会给出一个提示:interrupted by signal 15: SIGTERM。如果我们执行命令 kill -9:控制台输出内容:可以看到,当我们使用 kill -9 强制关闭进程的时候,程序并没有执行 shutdownHook,而是直接退出了,并且会给出一个提示:interrupted by signal 9: SIGKILL。到此,相信大家对“怎么理解kill命令”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要讲解了“css的%是相对于什么来取值的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css的%是相对于什么来取值的”吧! css %是相对于包含块的高宽或字体大小来取值。如果是静态定位和相对定位,包…