xen*_*ide 74 users administration
我之前在谷歌上搜索过这个并注意到了几种方法,但我猜谷歌并不知道所有。那么你如何将用户踢出你的 Linux 机器呢?另外,您如何才能看到他们首先登录?和相关的......如果用户登录到 X11 DE(不是我只是好奇的要求),你的方法是否有效?
Mic*_*zek 164
可能有更简单的方法,但我这样做:
查看谁登录了您的机器——使用who或w:
> who
mmrozek tty1 Aug 17 10:03
mmrozek pts/3 Aug 17 10:09 (:pts/2:S.0)
Run Code Online (Sandbox Code Playgroud)查找其 TTY 连接到的 shell 的进程 ID:
> ps t
PID TTY STAT TIME COMMAND
30737 pts/3 Ss 0:00 zsh
Run Code Online (Sandbox Code Playgroud)嘲笑他们即将断开连接(这一步是可选的,但鼓励)
> echo "HAHAHAHAHAHAHAHA" | write mmrozek pts/3
Run Code Online (Sandbox Code Playgroud)杀死相应的进程:
> kill -9 30737
Run Code Online (Sandbox Code Playgroud)我刚刚发现,你可以通过给合并步骤1和2who的-u标志; PID 是右边的数字:
> who -u
mmrozek tty1 Aug 17 10:03 09:01 9250
mmrozek pts/18 Aug 17 10:09 01:46 19467 (:pts/2:S.0)
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 36
正如 Micheal 已经指出的,您可以使用who来找出谁登录了。但是,如果他们有多个进程,则有一种比单独杀死每个进程更方便的方法:您可以使用killall -u username来杀死该用户的所有进程。
And*_*w B 24
死灵法术!
我很欣赏接受的答案的幽默,但从专业上讲,我不能提倡它。
我所知道的最优雅的方法是向 shell 发送一个 -HUP 来模拟用户挂断。您可以将其发送到用户的空闲 sshd 以模拟他们的连接丢失,这会触发整个 shell 环境(包括子 shell)的清理,或将其发送到特定的嵌套 shell(例如,在断开连接的终端多路复用器中设置的那些阻止你卸载文件系统)如果你想非常精确。
不过write,在启动它们之前使用向终端空闲 pty 发送消息是一个有趣的爱好。
小智 13
注销用户“用户名”:
skill -KILL -u username
Run Code Online (Sandbox Code Playgroud)
看 man skill
Mac*_*tka 11
其他有用的命令在pkill这里pkill -u username && pkill -9 -u username。
killall缺点是在 Solaris IIRC 上它意味着完全不同的东西 - 也pkill有稍微更高级的选项。