杀死给定用户的所有进程

She*_*evy 68 posix

是否有可靠的方法来杀死给定用户的所有进程?kill(-1, SIGKILL)因为该用户将工作,除非该用户的流氓进程首先杀死查杀过程.到目前为止,我能找到的最好的方法是system("ps -u")为该用户循环并以这种方式终止进程,但这看起来真的很麻烦且效率低下.

编辑:为了澄清,我特别要求一个POSIX兼容的解决方案.出于某种原因,我认为标记posix的问题会把它放在标题中.

use*_*lpa 96

只是(暂时)杀了我的Macbook

killall -u pu -m .
Run Code Online (Sandbox Code Playgroud)

其中pu是我的用户ID.观察命令末尾的点.

也试试

pkill -u pu
Run Code Online (Sandbox Code Playgroud)

要么

ps -o pid -u pu | xargs kill -1
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以输入"killall -KILL -u uid".无需指定-m参数.其中uid是用户的id. (2认同)

sor*_*rin 41

这是一个执行此操作的单行程序,只需将用户名替换为您要杀死的用户名.甚至不想在那里扎根!

pkill -9 -u `id -u username`
Run Code Online (Sandbox Code Playgroud)

注意:如果你想要很好地删除-9,但它不会杀死所有类型的进程.


jgr*_*cha 6

在Debian LINUX上,我使用:ps -o pid= -u username | xargs sudo kill -9.

随着-o pid=该PS头supressed,输出只有PID列表.据我所知,Debian shell符合POSIX标准.


小智 5

以下内容将杀死该用户创建的所有进程:

kill  -9  -1
Run Code Online (Sandbox Code Playgroud)

  • 根据POSIX,kill -9 -1被解释为kill(-1,SIGKILL)。“如果pid为-1,则sig应发送到该进程有权发送该信号的所有进程(不包括一组未指定的系统进程)。” 因此,按照标准(在macOS上为FWIW),这也将终止kill进程本身。 (3认同)