从命令行注销其他用户

有时候,当有太多用户登录时,由于可用的内存较少,我的计算机会变得非常缓慢和延迟。我希望能够通过命令行快速注销其他用户,而不是手动切换到每个用户并将其注销。
这种可能吗?
3个回答

这是一个答案。
who -u

给你PID的那个。
然后你可以结束用户会话。
kill "pid"

4这个方法有效,但是它有一些奇怪的副作用。 - Isaiah
3@DoR ...哪些是...? - Oli
4@Oli 例如GDM重新启动,以及尝试切换到我杀掉的用户都无法正常工作。 - Isaiah
3@AlvinRow 如果你执行 ps auxf 命令,你会注意到(最左边的列显示有效用户名),这种方法并不能杀死所有由当前用户执行的进程(所以可能你没有注销)。@precise 的方法似乎解决了这个问题,尽管我对发送 SIGKILL 不太放心。 - Dor
1我很惊讶没有像shutdown一样的东西,可以在强制注销之前发出警告(允许保存工作)。这将可选择仅切换到登录,就像更改会话一样,将用户会话保持在后台运行。 - pbhj
1关于通知,考虑查看这个答案 https://askubuntu.com/a/967130/970554。 - Manuel Jordan

您可以使用who命令来检查当前登录的用户。
who

你可以通过向用户进程发送“KILL”信号来注销用户。
sudo pkill -KILL -u <username>

(与sudo pkill -9 -u <username>相同)的意思是:
示例:
sudo pkill -9 -u guest-2Rw4Lq

(为了终止名为guest-2Rw4Lq的访客会话用户)
注意(感谢pbhj):如果你被锁在控制台中,使用Ctrl+Alt+F7返回到图形界面。

2这对我来说效果最好。只是运行kill "pid"会导致用户仍然运行着大量进程,而这个方法可以全部杀掉。 - Matt Baer
1为什么使用 SIGKILL 而不是默认的 SIGTERMSIGKILL 不太友好。 - Dor
sudo pkill -KILL -u <username> 这个命令让我切换到了第一个控制台会话;我以为它结束了我的当前会话,但是按下 ctrl+alt+F7 又回到了当前的图形界面会话。 - pbhj
-1:这个命令不知怎么地触发了一个优先级更高的进程,而且它从未停止,我不得不重新启动机器来终止用户的操作。 - RSFalcon7

who -u


> adam     ttys000  Aug  4 09:22   .       91228 

然后
sudo kill 'PID number'
sudo kill 91228

PID(进程ID)是用户输出的末尾的四至五位数(91228)。