在linux环境,大多数人采用 kill -9 pid 中止一个服务器进程,但kill -9 常会带来一些问题;
在Linux信号机制中,存在多种进程中断信号(Linux信号列表 )。其中比较典型的有
HUP 1 终端断线
INT 2 中断
QUIT 3 退出
TERM 15 终止
KILL 9 强制终止
CONT 18 继续
STOP 19 暂停
SIGNKILL(9) 和 SIGNTERM(15) 的区别在于:
SIGNKILL(9) 的效果是立即杀死进程. 该信号不能被阻塞, 处理和忽略。
SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。
标准的kill进程方式:kill pid
注释: 标准的kill命令,默认采用信号(signal)号是15,通常都能达到目的,终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。