程序的删除kill、killall

发送信号给程序,或者列出信号集
SYNOPSIS
       kill [-s SIGNAL | -SIGNAL] PID...
       kill -l [SIGNAL]...
 
1.信号操作简要说明
1)kill -l。列出信号名和
2)kill + 信号 + %jobnumber。表示给某个工作发信号
3)kill + 信号 + PID。表示给某个PID发信号
 
2.重要的几个信号
 
代号 名称 内容
1 SIGHUP 代表『让该 PID 重新读取自己的设定档』 ,类似重新启动
2 SIGINT 代表用键盘输入的 [ctrl]-c 来中断一个程序的进行。
9 SIGKILL 代表强制中断一个程序的进行,如果该程序进行到一半, 那么尚未完成的部分可能会 有『半产品』产生,类似 vim会有 .filename.swp 保留下来。
15 SIGTERM 以正常的结束程序来终止该程序。由于是正常的终止, 所以后续的动作会将他完成。 不过,如果该程序已经发生问题,就是无法使用正常的方法终止时,输入这个 signal也是没有用的。
 
例1:以 ps 找出 syslog 这个服务的 PID 后,再使用 kill 重新读取 syslog 的设定文件数据:
# kill -SIGHUP `ps aux|grep 'syslog'|grep -v 'grep'|awk '{print $2}'`
killall
由于 kill 后面必须要加上 PID (或者是 job number),所以,通常 kill 都会配合 ps, pstree 等指令, 因为我们必须要找到相对应的那个程序的 ID 嘛!但是,如此一来,很麻烦~ 有没有可以利用『下达指令 的名称』来给予讯号的?举例来说,能不能直接将 syslog 这个程序给予一个 SIGHUP 的讯号呢?可以的! 用 killall 吧!
[root@linux ~]# killall [-iIe] [-signal][command name] 参数: 
-i  :interactive 的意思,交互式的,若需要删除时,会出现提示字符给使用者; 
-e  :exact 的意思,表示『后面接的 command name 要一致』,但整个完整的指令 
不能超过 15 个字符。  
-I  :指令名称(可能含参数)忽略大小写。 

例1:给予syslogd 这个指令启动的PID一个SIGHUP的讯号

[root@linux ~]# killall -1 syslogd
# 如果用 ps aux 仔细看一下,syslogd 才是完整的指令名称。但若包含整个参数,
# 则 syslogd -m 0 才是完整的呢! 

范例二:强制终止所有以 httpd 启动的程序

[root@linux ~]# killall -9 httpd 
原文地址:https://www.cnblogs.com/yanxin880526/p/4735883.html