进程的管理

Apr 4, 2016


进程的管理是通过信号机制来实现的. 把一个信号传递给进程, 进程就会做出相应的动作, 这就是进程管理

信号表

代号 名称 说明
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
    

上一篇博客:Ugly Number(II)
下一篇博客:系统资源的查看