kill[参数][进程号]
2.命令功能:
参数说明:/pid 要终止进程的pid,可用tasklist命令获得各进程的pid,/im 要终止的进程的进程名,/f 强制终止进程,/t 终止指定的进程及他所启动的子进程。表示当前命令是否正在执行的信号.raccommand被excute调用后,且在信号终止前,这个信号会发送yes.当信号结束了,会发送no.。它的进程号始终为1,所以发送term信号给init会终止所有的用户进程,守护进程等。
3.命令参数:
-l信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a当处理当前进程时,不限制命令名和进程号的对应关系
-p指定kill命令只打印相关进程的进程号,而不发送任何信号
-s指定发送信号
-u指定用户
注意:
1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:
kill-2123
它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。
若pid等于-1,则信号将被发送到所有的进程(特殊系统进程除外). 信号要发送到指定的进程,首先调用进程必须有对该进程发送信号的权限.若调用进程有合适的优先级则具备有权限.若调用进程的实际或有效的uid等于接收信号的进程的实际uid或用setuid()。以上解释了测试1,2的现象,write一个已经接受到rst的socketlinux命令大全,系统内核会发送sigpipe给发送进程,如果进程catch/ignore这个信号,write都返回epipe错误.。错误被描述为“broken pipe”,即“管道破裂”,这种情况一般发生在客户进程不理会(或未及时处理)socket 错误,继续向服务 tcp 写入更多数据时,内核将向客户进程发送 sigpipe 信号,该信号默认会使进程终止(此时该前台进程未进行 core dump)。
3、可以向多个进程发信号或终止它们。
4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。
5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill0来终止所有由当前shell启动的进程,是个有效的方法。
4.使用实例:
实例1:列出所有信号名称
命令:
kill-l
输出:
[root@localhosttest6]#kill-l
1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL
5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE
9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR2
13)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT
17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP
21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU
25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH