是否存在杀死给定用户的所有进程的可靠方法?kill(-1, SIGKILL)
除非该用户的恶意进程先杀死了该杀死进程,否则该用户将继续工作。到目前为止,我能找到的最好的办法是system("ps -u")
为该用户循环访问并以这种方式终止进程,但这似乎确实很麻烦且效率低下。
编辑:为澄清起见,我专门要求兼容POSIX的解决方案。由于某种原因,我认为标记问题posix会将其放在标题中。
是否存在杀死给定用户的所有进程的可靠方法?kill(-1, SIGKILL)
除非该用户的恶意进程先杀死了该杀死进程,否则该用户将继续工作。到目前为止,我能找到的最好的办法是system("ps -u")
为该用户循环访问并以这种方式终止进程,但这似乎确实很麻烦且效率低下。
编辑:为澄清起见,我专门要求兼容POSIX的解决方案。由于某种原因,我认为标记问题posix会将其放在标题中。
Answers:
只是(暂时)杀死了我的Macbook
killall -u pu -m .
pu是我的用户名。注意命令末尾的点。
也试试
pkill -u pu
要么
ps -o pid -u pu | xargs kill -1
这是一个执行此操作的衬板,只需将用户名替换为您要杀死的用户名即可。甚至不要考虑在这里扎根!
pkill -9 -u `id -u username`
注意:如果您想变好,请删除-9,但它不会杀死所有进程。
在Debian LINUX上,我使用:ps -o pid= -u username | xargs sudo kill -9
。
使用-o pid=
ps标头将被禁止,并且输出仅是pid列表。据我所知,Debian shell是POSIX兼容的。
以下内容将杀死该用户创建的所有进程:
kill -9 -1
在/ proc虚拟文件系统上进行迭代怎么样?http://linux.die.net/man/5/proc?
kill
)都具有TOCTOU竞争条件:在确定要杀死的进程与杀死它们之间,进程可能会死掉,并且其PID可能会被回收。否则可能会出现该用户拥有的新进程,而您对此并不了解。