列出所有运行vlc的进程:
debian@debian:~$ ps aux |grep vl[c]
debian 14482 0.1 2.2 2882968 136428 ? Sl 10:19 0:02 vlc -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
debian 15174 0.2 2.4 2881576 145368 ? Ssl 10:32 0:03 vlc -d -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
debian 15641 0.3 2.4 2896668 146380 ? SLsl 10:42 0:01 vlc -d -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
杀光他们:
debian@debian:~$ sudo kill 14482
debian@debian:~$ sudo kill 15174
debian@debian:~$ sudo kill 15641
再次列出:
debian@debian:~$ ps aux |grep vl[c]
debian 14482 0.1 2.2 2882968 136428 ? Sl 10:19 0:02 vlc -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
debian 15174 0.2 2.4 2881576 145368 ? Ssl 10:32 0:03 vlc -d -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
debian 15641 0.3 2.4 2896668 146380 ? SLsl 10:42 0:01 vlc -d -I telnet --telnet-host 192.168.31.167 --telnet-port 4212 --telnet-password admin
为什么杀掉进程后还能列出来?
查看
man kill
:最顶部是:“向进程发送信号”。这并不意味着该进程将被终止,只是它将被发送一个信号。
默认信号是
SIGTERM
。根据man signal.7
,SIGTERM
是可捕获的。这意味着,程序收到停止请求,然后程序有机会对此执行某些操作。如果是数据库,也许在停止之前会保存。如果程序不处理
SIGTERM
,或者选择执行除停止之外的其他操作,您将得到您所看到的行为。您还可以尝试发送其他信号。
SIGINT
(2) 与您在终端中使用 CTRL+C 时发送的内容相同。常见的一种SIGKILL
(9)可能就是您想要的。SIGKILL
是少数不会传播到进程的信号之一。相反,它是向内核发出的信号,要求其终止进程。在这种情况下,进程是否被编码为handle并不重要SIGTERM
,它会被内核停止而不被通知。缺点是如果它需要保存其工作,或通知同级它正在关闭,它就没有机会。用法是这样的:man signal.7
有更多详细信息。如果您的机器与我的机器不同,请使用您机器上的手册页作为参考。