使用信号控制进程:kill
kill 可将指定的信息送至程序。 一般地,kill 命令用于删除执行中的程序或工作。在系统运行期间,若发生了如下情况,就需要将这些进程杀死。 ·进程展会用了过多的CPU时间 ·进程锁住了一个终端,是其他前台进程无法运行 ·进程运行时间过长,但没有预期效果或无法正常退出 ·进程产生了过多的到屏幕或磁盘文件的输出
kill
命令的基本语法如下:
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
-
-l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-
-s <信息名称或编号> 指定要送出的信息。
-
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
-
信号种类
进程信号是在软件层次上对中断机制的一种模拟,一个进程收到一个信号与处理器收到一个中断请求是一样的。 进程信号是最基本的进程间通信方式:可以在进程之间直接发送,而不需要用户界面;可以在Shell中通过kill命令发送给进程。
kill -l # 使用 kill -l 命令列出所有可用信号
编号 信号名 1) SIGHUP 重新加载配置 2) SIGINT 键盘中断Ctrl+C 3) SIGQUIT 键盘退出Ctrl+,类似SIGINT 9) SIGKILL 强制终止,无条件 15) SIGTERM 终止(正常结束),缺省信号 18) SIGCONT 继续 19) SIGSTOP 暂停 20) SIGTSTP 键盘暂停Ctrl+Z
例:
发送9,15信号,观察终端程序状态
touch file1 file2 tty # 终端类型 vim file1 # 新建窗口2 vim file2 # 新建窗口3 ps aux | grep vim #发送9,15信号 kill -15 pid1 # 程序正常关闭,自动保存 kill -9 pid2 # 内存中直接擦除
杀死进程
kill pid
强制杀死进程
kill -KILL pid
发送 SIGHUP信号
kill -HUP pid
彻底杀死进程
kill -9 pid
显示信号
kill -l