How do you kick a benign user off your system?
There's probably an easier way, but I do this:
See who's logged into your machine -- use
who
orw
:> who mmrozek tty1 Aug 17 10:03 mmrozek pts/3 Aug 17 10:09 (:pts/2:S.0)
Look up the process ID of the shell their TTY is connected to:
> ps t PID TTY STAT TIME COMMAND 30737 pts/3 Ss 0:00 zsh
Laugh at their impending disconnection (this step is optional, but encouraged)
> echo "HAHAHAHAHAHAHAHA" | write mmrozek pts/3
Kill the corresponding process:
> kill -9 30737
I just discovered you can combine steps 1 and 2 by giving who
the -u
flag; the PID is the number off to the right:
> 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)
As Micheal already pointed out, you can use who
to find out who's logged in. However if they have multiple processes, there's a more convenient way than killing each process individually: you can use killall -u username
to kill all processes by that user.
Necromancy!
I appreciate the humor of the accepted answer, but professionally I can't advocate it.
The most graceful method I'm aware of is to send a -HUP to the shell to simulate a user hangup. You can send this to the user's idle sshd to simulate their connection being lost, which triggers a cleanup of the entire shell environment (including child shells), or send this to specific nested shells (say, ones setting inside of a disconnected terminal multiplexer that are keeping you from unmounting a filesystem) if you want to be really precise.
Using write
to send messages to terminally idle ptys before you boot them is a fun hobby though.