1、命令详解:
kill命令是用于向进程发送信号,通常用来终止某个指定PID服务进程,kill命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15),即终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。
2、官方参数:
选项:
-s sig SIG是一个信号名称
-n sig SIG是一个信号名称数字
-l 列出信号名称
-L 与-l参数同义
3、信号详解:
通过命令可以列出所有信号,例如下图所示:SIGHUP信号前面为1),在日常使用中可以不写后面完整的信号名称,只需要在kill命令后跟信号数字即可,后面会有实战案例演示。
kill -l
#列出所有信号
1) SIGHUP | 挂起信号。 |
2) SIGINT | 中断信号,类似Ctrl+C键。 |
3) SIGQUIT | 退出信号。 |
4) SIGILL | 非法指令信号,通常表示进程执行了非法的机器指令。 |
5) SIGTRAP | 跟踪陷阱信号,通常用于调试目的。 |
6) SIGABRT | 中止信号,通常由进程自己发送并反馈已经崩溃。 |
7) SIGBUS | 总线错误信号,通常表示进程访问了无效的内存地址。 |
8) SIGFPE | 浮点异常信号,通常表示进程执行了无效的浮点操作。 |
9) SIGKILL | 强制终止信号,通常用于强制终止进程。 |
10) SIGUSR1 | 用户自定义信号1,可以由进程自己发送或其他进程发送。 |
11) SIGSEGV | 段错误信号,通常表示进程访问了无效的内存地址。 |
12) SIGUSR2 | 用户自定义信号2,可以由进程自己发送或其他进程发送。 |
13) SIGPIPE | 管道破裂信号,通常表示进程向已关闭的管道写入数据。 |
14) SIGALRM | 定时器信号,通常用于定时器和闹钟功能。 |
15) SIGTERM | 终止信号,通常用于请求进程正常退出。 |
16) SIGSTKFLT | 协处理器栈错误信号,通常表示协处理器栈溢出。 |
17) SIGCHLD | 子进程状态改变信号,通常在子进程终止时发送给父进程。 |
18) SIGCONT | 继续信号,通常用于恢复被暂停的进程。 |
19) SIGSTOP | 停止信号,无法被忽略或捕获,通常用于暂停进程。 |
20) SIGTSTP | 终端停止信号,通常由用户按下Ctrl+Z键发送给进程。 |
21) SIGTTIN | 后台进程读取终端信号,通常在后台进程尝试从控制终端读取输入时发送。 |
22) SIGTTOU | 后台进程写入终端信号,通常在后台进程尝试向控制终端写入输出时发送。 |
23) SIGURG | 紧急条件信号,通常表示进程收到了带外数据。 |
24) SIGXCPU | CPU时间限制信号,通常表示进程超过了分配给它的CPU时间限制。 |
25) SIGXFSZ | 文件大小限制信号,通常表示进程试图创建或修改的文件超过了文件大小限制。 |
26) SIGVTALRM | 虚拟定时器信号,通常用于虚拟定时器和闹钟功能。 |
27) SIGPROF | 性能分析器信号,通常用于性能分析器和跟踪工具。 |
28) SIGWINCH | 窗口大小改变信号,通常在终端窗口大小发生变化时发送给进程。 |
29) SIGIO | 输入/输出信号,通常用于异步I/O操作。 |
30) SIGPWR | 电源故障信号,通常表示系统电源出现故障。 |
31) SIGSYS | 无效系统调用信号,通常表示进程尝试执行无效的系统调用。 |
34) SIGRTMIN | 实时信号最小值,可用于用户自定义实时信号。 |
35) SIGRTMIN+1 到63)SIGRTMAX-1 | 实时信号,可用于用户自定义实时信号。 |
64)SIGRTMAX | 实时信号最大值,可用于用户自定义实时信号。 |
4、实战案例:
1、查看信号
列出kill命令信号数字和名称。
kill -l
2、退出进程
首先我们必须知道需要退出哪些进程,然后通过ps命令来查询进程号信息,如下图所示为查询和退出进程的完整流程,用另外一个窗口可以查看正在执行中的进程被退出后的反馈。
kill 45748
#退出进程号为45748的应用
3、强制退出进程
通过查看信号列表得知如果需要强制退出进程则需要用到信号9) SIGKILL
kill -9 47520