杀死Ubuntu中所有用户进程?


20

如何杀死一个用户的所有进程?

当我ps aux获取多个用户的进程列表时,例如,我想杀死用户的所有进程name1!在Ubuntu中执行此操作的命令是什么?



1
如果用户是真实的人,那么这可能不是一个好主意。我也认为您想终止进程以节省时间。这是一个非常糟糕的主意。例如,可以使用停止Ubuntu中的服务sudo service the-service-name stop。杀死进程可能会留下损坏的文件,数据库等
tiktak

Answers:



14

添加另一个选项是因为没有人提及它,我也不喜欢killall(在solaris上使用它可能会导致灾难)。

pkill 更便携

pkill -u username

killall在Ubuntu中找不到,但是pkill已经安装了。
david.perez

2

确定用户,然后 killall -user <username>

他们将有一个与登录会话终止相关的bash(或类似)进程,该进程将终止其会话。

为了更好地了解用户的操作,请尝试 pstree <username>


您需要在用户之前添加两个破折号,例如--user
jmtd 2012年

1

安装slay

资质安装杀

然后发出slay some-user

请注意,如果您杀死了用途不明的用户,则可能使计算机无法使用(直到重新启动)。

如果您真的不想安装Slay:

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill

(稍等一会)

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill -9

1
顺便说一句awk可以本身grep的东西。无需做grep smth | awk,因为您可以awk '/smth/{...}'改用。

这是一个方便的小功能。 killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.