大家对kill -9 肯定非常熟悉,在工作中也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。
很少有人(包括我)认真的去了解一下 kill -n 这个n到底是什么东东。自我批评一下。
好吧。我们来好好的认识一下这个熟悉的陌生人。
1)kill
从help中可以清晰的看到 -n 指的是 信号编号,那问题来了,“信号编号”是哪位大神???
2)kill -l(查看Linux/Unix的信号变量)
这么多呀!! 今天就单独说一下SIGKILL和SIGTERM
3)(kill pid) 、( kill -15 pid)
系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情
- 程序立刻停止
- 当程序释放相应资源后再停止
- 程序可能仍然继续运行
大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以
配置的。如果程序正在等待IO,可能就不会立马做出相应。
也就是说,SIGTERM多半是会被阻塞的、忽略。
4)kill -9 pid
你不是可以不响应 SIGTERM吗??那好,我给你下一道必杀令,我看你还不乖乖的。多半admin会用这个命令
不过,也不是所有的程序都会乖乖听话,总有那些状态下的程序无法立刻相应。
附录:
linux signals
Signal Name | Number | Description |
SIGHUP | 1 | Hangup (POSIX) |
SIGINT | 2 | Terminal interrupt (ANSI) |
SIGQUIT | 3 | Terminal quit (POSIX) |
SIGILL | 4 | Illegal instruction (ANSI) |
SIGTRAP | 5 | Trace trap (POSIX) |
SIGIOT | 6 | IOT Trap (4.2 BSD) |
SIGBUS | 7 | BUS error (4.2 BSD) |
SIGFPE | 8 | Floating point exception (ANSI) |
SIGKILL | 9 | Kill(can't be caught or ignored) (POSIX) |
SIGUSR1 | 10 | User defined signal 1 (POSIX) |
SIGSEGV | 11 | Invalid memory segment access (ANSI) |
SIGUSR2 | 12 | User defined signal 2 (POSIX) |
SIGPIPE | 13 | Write on a pipe with no reader, Broken pipe (POSIX) |
SIGALRM | 14 | Alarm clock (POSIX) |
SIGTERM | 15 | Termination (ANSI) |
SIGSTKFLT | 16 | Stack fault |
SIGCHLD | 17 | Child process has stopped or exited, changed (POSIX) |
SIGCONT | 18 | Continue executing, if stopped (POSIX) |
SIGSTOP | 19 | Stop executing(can't be caught or ignored) (POSIX) |
SIGTSTP | 20 | Terminal stop signal (POSIX) |
SIGTTIN | 21 | Background process trying to read, from TTY (POSIX) |
SIGTTOU | 22 | Background process trying to write, to TTY (POSIX) |
SIGURG | 23 | Urgent condition on socket (4.2 BSD) |
SIGXCPU | 24 | CPU limit exceeded (4.2 BSD) |
SIGXFSZ | 25 | File size limit exceeded (4.2 BSD) |
SIGVTALRM | 26 | Virtual alarm clock (4.2 BSD) |
SIGPROF | 27 | Profiling alarm clock (4.2 BSD) |
SIGWINCH | 28 | Window size change (4.3 BSD, Sun) |
SIGIO | 29 | I/O now possible (4.2 BSD) |
SIGPWR | 30 | Power failure restart (System V) |
参考文献:
https://major.io/2010/03/18/sigterm-vs-sigkill/
http://blog.csdn.net/ashlingr/article/details/8057825
http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html
相关推荐
linux kill杀不掉进程的原因,及解决办法.zip
util-linux-ng-2.17源码(含fdisk) Here is a list of all documented files with brief descriptions: util-linux-ng-2.17.2/disk-utils/blockdev.c [code] util-linux-ng-2.17.2/disk-utils/cramfs.h [code] ...
在实际使用中,要谨慎使用`kill -9`,尽量先尝试发送`kill -15`或`kill -1`,如果进程响应,那么可以避免数据丢失和系统不稳定的风险。同时,理解不同信号的意义和作用,有助于更有效地管理Linux系统中的进程。
kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。 应用实例一: * 强行中止(经常使用杀掉)一个进程标识号为 324 ...
Linux 操作系统中,ps 命令和 kill 命令是两个非常重要的命令,分别用于显示进程信息和中止进程。这两个命令在 Linux 系统中扮演着非常重要的角色。 ps 命令是用于显示当前系统中的进程信息,包括进程的 PID、父...
Linux kill 命令参数及用法详解 Linux kill 命令是 Linux ...Linux kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。
总的来说,WinEggDrop Kill TCP是一个有价值的工具,对于需要控制和管理网络连接的IT专业人士来说,它提供了一种便捷的方式来断开TCP连接。通过深入研究提供的源代码,我们可以学习到更多关于网络编程和TCP连接管理...
### Linux Kill 命令详解 #### 一、概述 Linux系统中,有时我们需要终止...通过学习和理解`kill`、`killall`、`pkill`及`xkill`命令,我们可以更有效地管理和控制Linux系统中的进程,从而提高系统的稳定性和安全性。
".tar.gz"是一个常见的文件打包格式,它是Linux和Unix系统中常用的压缩方式,它首先使用tar工具将多个文件打包成一个大文件,然后用gzip工具进行压缩,以减少文件的存储空间。 在Python生态系统中,这样的压缩包...
4. **进程管理**:`ps`显示当前进程状态,`kill`和`killall`用于结束进程,`top`或`htop`实时显示系统资源使用情况。了解如何管理和监控系统进程对于优化系统性能和解决问题至关重要。 5. **网络工具**:`ping`测试...
在Linux系统中,`pt-kill`是Percona Toolkit中的一个实用工具,用于监控和杀死慢查询。Percona Toolkit是一套强大的命令行工具集合,专为MySQL、MariaDB和Percona Server设计,用于性能优化、故障排查以及数据库维护...
kill 命令可以发送不同的信号来结束进程,例如:`kill -15 PID` 将发送 SIGTERM 信号,而 `kill -9 PID` 将发送 SIGKILL 信号。 四、 进程树结构 在 Linux 中,进程之间可以形成树形结构,每个进程都是一个节点,...
标题中的“Shell kill tomcat process”指的是在Linux或Unix操作系统中,使用Shell命令来结束Tomcat服务进程。Tomcat是一款广泛使用的开源Java Servlet容器,它用于部署和运行Java Web应用程序。在某些情况下,可能...
在Linux操作系统中,`kill`命令是一项极为重要的工具,用于管理和控制正在运行的进程。通过发送不同的信号给目标进程,`kill`命令可以实现对进程的终止、暂停、继续执行等多种操作。在日常的系统管理工作中,熟练...
kill pid # 等同于kill -15 pid,发送SIGTERM信号 kill -9 pid # 发送SIGKILL信号,强制结束进程 ``` 总结来说,`kill`命令是Linux系统管理员控制进程的重要工具,理解并正确使用各种信号能够帮助我们更有效地管理...
MySQL是世界上最受欢迎的开源数据库系统之一,特别是在Web应用程序中。5.7.18是MySQL的一个重要版本,它带来了许多性能提升和新...在Linux环境下,通过解压和安装`.tar.gz`包,您可以轻松地部署和利用这些增强的功能。
Linux kill命令 Linux kill命令用于删除执行中的程序或工作。 kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的...
如果发现相关进程,使用 kill -9 命令结束进程。 接下来,进行扩容操作。首先,使用 ls /dev/sd* 命令查看分区数量,然后新建分区并格式化。接着,重启虚拟机,并将初始化的分区加入到虚拟卷组 rhel 中。使用 lvm ...
### 学习Linux---不得不知的Linux命令 在Linux操作系统中,掌握一系列基本且重要的命令是每个用户必备的技能之一。这些命令可以帮助我们更高效地管理服务器、进行日常操作及故障排查等工作。以下是对给定内容中列出...
2. **停止Java服务**:使用`kill`命令发送SIGTERM信号(-15)来优雅地停止进程,如果服务没有响应,可以发送SIGKILL信号(-9)强制终止。 3. **清理**:在服务停止后,可能需要清理日志文件或其他临时资源。 一个...