进程的管理是通过信号机制来实现的. 把一个信号传递给进程, 进程就会做出相应的动作, 这就是进程管理
信号表
| 代号 | 名称 | 说明 |
|---|---|---|
| 1 | SIGHUP |
启动终止的进程, 如果已经启动则重新读取配置, 相当于重启 |
| 2 | SIGINT |
中断一个进程的执行, 也就是ctrl+c |
| 9 | SIGKILL |
强制中断一个进程的执行, 但是会产生历史缓存 |
| 15 | SIGTERM |
正常结束一个进程的执行, 如果进程已经异常, 那么信号无效 |
| 17 | SIGSTOP |
暂停一个进程的执行, 也就是ctrl+z |
以上信号表是常用的信号说明, 更加详细的可以通过指令:
kill -l查询
kill指令
kill指令从名字上看就是杀死进程的样子, 实际上不是. kill指令是用于传送指定的信号给指定的进程.
kill参数说明
| 参数 | 说明 |
|---|---|
-l |
列出所有的信号 |
-L |
表格形式列出所有的信号 |
-<signal> |
指定信号 |
kill使用实例
-
启动或重启syslog进程
kill -SIGHUP $(ps aux|grep 'syslog'|grep -v 'grep'|awk '{print $2}') -
终止所有可以终止的进程
kill -9 -1
killall指令
在使用kill指令的时候发现每次都需要指定PID, 这样非常麻烦. killall指令帮助我们解决了问题, 它通过指定命令名称来发送信号.
killall参数说明
| 参数 | 说明 |
|---|---|
-i |
交互式执行killall |
-I |
命令名称忽略大小写 |
-e |
指定命令名称要完全一致, 但是最多15个字符, 超过15以15个匹配 |
killall使用实例
-
启动或重启以
syslogd命令启动的进程killall -1 syslogd -
终止所有以
httpd命令启动的进程, 并且交互式进行killall -i -9 httpd