杀死进程最安全的方法是单纯使用kill命令, 不加修饰符, 不带标志。
首先使用ps -ef命令确定要杀死进程的PID, 然后输入以下命令:
# kill -pid
注释:标准的kill命令通常都能达到目的。 终止有问题的进程, 并把进程的资源释放给系统。 然而, 如果进程启动了子进程, 只杀死父进程, 子进程仍在运行, 因此仍消耗资源。 为了防止这些所谓的“僵尸进程”, 应确保在杀死父进程之前, 先杀死其所有的子进程。
确定要杀死进程的PID或PPID
# ps -ef | grep httpd
以优雅的方式结束进程
# kill -l PID
-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。 当使用该选项时, kill命令也试图杀死所留下的子进程。 但这个命令也不是总能成功--或许仍然需要先手工杀死子进程, 然后再杀死父进程。
TERM信号
给父进程发送一个TERM信号, 试图杀死它和它的子进程。
# kill -TERM PPID
killall命令
killall命令杀死同一进程组内的所有进程。 其允许指定要终止的进程的名称, 而非PID。
# killall httpd
停止和重启进程
有时候只想简单的停止和重启进程。 如下:
# kill -HUP PID
该命令让Linux和缓的执行进程关闭, 然后立即重启。 在配置应用程序的时候, 这个命令很方便, 在对配置文件修改后需要重启进程时就可以执行此命令。
绝杀 kill -9 PID
同意的 kill -s SIGKILL
这个强大和危险的命令迫使进程在运行时突然终止, 进程在结束后不能自我清理。 危害是导致系统资源无法正常释放, 一般不推荐使用, 除非其他办法都无效。
当使用此命令时, 一定要通过ps -ef确认没有剩下任何僵尸进程。 只能通过终止父进程来消除僵尸进程。 如果僵尸进程被init收养, 问题就比较严重了。 杀死init进程意味着关闭系统。
如果系统中有僵尸进程, 并且其父进程是init, 而且僵尸进程占用了大量的系统资源, 那么就需要在某个时候重启机器以清除进程表了。














