如何强制其他用户注销?


14

当我以root用户身份登录时,有没有一种简单的方法可以让另一个用户退出linux系统?我了解我可以确定他们打开了哪种类型的会话,并杀死了pid-但我认为必须有一个命令来执行我不知道的操作。

有任何想法吗?

Answers:


15

你可以简单地slay(1)他。:-)


哈!整齐。我以前从未听说过此命令。在所有系统上都可用吗?当然,它看起来像击败了他们的shell过程。
乔纳森·沃特尼

它可能是为所有发行版打包的,但是如果您需要在任何地方都可以使用的东西,那么从procps的技能(如Mihai指出的那样)可能是更好的选择。它虽然样式较少;-)
大卫·史密特

1
openSUSE的11.4 -必杀:找不到命令:( :(
USR-本地ΕΨΗΕΛΩΝ

我当前可用的Ubuntu 12.04或RHEL 3主机上未安装,但确实有skillMihaiLimbăşan详细介绍的命令。YMMV
David


10

您可以通过杀死用户的所有进程skill。例:

  • skill -TERM -u username

会将SIGTERM发送到的所有username进程。要永久杀死它们(通过SIGKILL),请使用-KILL而不是-TERM-但是请注意,您很可能会导致它们以这种方式丢失数据。请注意,这是非常有效的...

skillprocps默认情况下由所有发行版安装的软件包的一部分。


对于希望对所有远程用户会话执行此操作的其他人,-v pts/*手册页中的-v标志()可能很有用。
大卫,

2

pkillkillall优于skill。这是从skill手册页:

这些工具可能已过时且不可移植。命令语法定义不正确。考虑使用killallpkillpgrep命令来代替。

这应该可以解决问题:

sudo pkill -KILL -u [user]

要么

sudo killall -u [user]


0

另一种简单的方法是kill -1 <pid>pid是SSH会话的进程ID号的情况下运行。

通过运行此命令,您可以查看所有sshd进程树,通过杀死父进程ID,您将有效地杀死与其关联的用户会话:

$ ptree -p

查找sshd,然后运行:

$ kill -1 39383

其中39383是任意进程ID号的示例。

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.