RHEL6系统进程管理之四进程管理kill命令

我们就来看看RHEL6系统进程的管理了我们知道,一般程序本身都会带自身的管理程序,如关闭、重新启动。除了自带的,我们也可以通过发信号的方式来告诉程序需要做什么,这就是下面我们要介绍的内容。

先来了解一下几个常用的信号

[root@yufei ~]# kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR111) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+338) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+843) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+1348) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-1253) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-758) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-263) SIGRTMAX-164) SIGRTMAX系统中有这么多的信号,我们不用管他,只要来了解几个常用的就OK了,如果想仔细的研究的朋友,请到网上找相应的内容,或者是查看signal的帮助(man 7 signal 如果没有此命令,请安装man-pages软件包)。

1 SIGHUP 启动被终止的程序,可让该 PID 重新读取自己的配置文件,类似重新启动

2 SIGINT 相当于用键盘输入 ctrl+c 来中断一个程序

9 SIGKILL 代表强制停止一个程序的进行,,如果该程序进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim会有 .filename.swp 保留下来

15 SIGTERM 以正常的结束程序来终止该程序。由于是正常的终止,所以后续的动作会将他完成。不过,如果该程序已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。

17 SIGSTOP 相当于用键盘输入 ctrl+z 来暂停一个程序

上面的数字是信号代码,而SIG*就是信号,这两个是等同的哦。

进程管理命令kill,killall,pkill,xkill详解那么我们如何传送一个信号给某个进程呢?就要通过 kill 、killall、pkill、xkill了。下面就来看看他们是如何使用的。

kill的应用是和ps 或pgrep 命令结合在一起使用的;

kill 的用法:

kill [信号][信号代码] 进程ID

注意:信号或信号代码只要用一个就OK了。

[root@yufei ~]# ps auxf |grep httpdroot 3890 0.0 0.3 103228 864 pts/0 S+ 22:25 0:00 \_ grep httpdroot 3879 0.5 4.1 281892 10220 ? Ss 22:25 0:00 /usr/sbin/httpdapache 3881 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3882 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3883 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3884 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3885 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3886 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3887 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3888 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpd

第二列就是进程的ID了,而3879 我们可以明显的看出来他是httpd服务器的父进程,从3881到3888是httpd服务器的子进程了,如果杀死子进程,只是针对自己起作用。

[root@yufei ~]# kill -15 3888[root@yufei ~]# ps auxf |grep httpdroot 3893 0.0 0.3 103228 864 pts/0 S+ 22:28 0:00 \_ grep httpdroot 3879 0.0 4.1 281892 10220 ? Ss 22:25 0:00 /usr/sbin/httpdapache 3881 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3882 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3883 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3884 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3885 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3886 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpdapache 3887 0.0 2.2 281892 5548 ? S 22:25 0:00 \_ /usr/sbin/httpd

3888这个进程没有了

而如果杀死父进程,那么所有的子进程也就完了

记忆的屏障,曾经心动的声音已渐渐远去。

RHEL6系统进程管理之四进程管理kill命令

相关文章:

你感兴趣的文章:

标签云: