Иногда вам может потребоваться убить несколько пользовательских сессий в системе Linux.
Например, вам нужно запустить задание, для которого все пользователи должны выйти из системы.
Другой пример – вы наблюдаете много сеансов ssh в своей системе и хотите убить их всех.
Если да, то как это сделать?
Есть несколько способов добиться этого результата.
Я покажу вам несколько способов, а вы сможете выбрать тот, который соответствует вашим потребностям
Как посмотреть активные сессии ssh?
Вы можете увидеть активные сеансы ssh, запустив команду w на Linux.
# w 00:34:21 up 48 days, 23:38, 4 users, load average: 0.79, 0.58, 0.56 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT magesh pts/0 192.168.1.101 19:47 4:45m 0.04s 0.00s sh /opt/scripts/disk-usage.sh renush pts/1 192.168.1.102 20:35 3:54m 2:23 0.00s sh bash thanis pts/2 192.168.1.103 00:27 5.00s 0.08s 0.04s ssh root pts/4 192.168.1.104 00:34 1.00s 0.02s 0.01s w
1) Как убить пользовательские сессии в Linux с помощью команды pkill
Вы можете напрямую убить сеанс ssh определенного пользователя, используя номер сеанса tty.
Вы можете увидеть номер сеанса tty из вывода команды w.
В моем случае я собираюсь убить сеанс пользователя «magi», этот пользователь подключен к серверу с помощью pts/5, поэтому команда будет следующей:
# pkill -9 -t pts/2
Хотите понять разницу между tty и pts?
В чем разница между tty и pts?
- TTY: tty означает Teletypewriter. Он напрямую связан с системой как клавиатура / мышь или последовательное соединение с устройством (например, консоль в вашей системе).
- PTS: pts обозначает pseudo terminal slave. Это терминальное устройство, которое эмулируется другой программой (например, сессией ssh в вашей системе).
2) Как убить пользовательские сессии в Linux с помощью команды Killall
Вы можете убить пользовательский сеанс следующим образом с помощью команды killall.
В моем случае я убиваю сеанс пользователя «magesh» с помощью ключа «-u».
# killall -u magesh
3) Как убить пользовательские сессии в Linux с помощью команды Kill
Кроме того, вы можете убить пользовательский сеанс с помощью команды kill.
Этот метод потребует нескольких дополнительных шагов по сравнению с вышеупомянутыми двумя методами, потому что вы не сможете убить сессию напрямую.
Сначала найдите номер tty сеанса пользователя из вывода команды w.
w 00:34:21 up 48 days, 23:38, 4 users, load average: 0.79, 0.58, 0.56 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT magesh pts/0 192.168.1.101 19:47 4:45m 0.04s 0.00s sh /opt/scripts/disk-usage.sh renush pts/1 192.168.1.102 20:35 3:54m 2:23 0.00s sh bash thanis pts/2 192.168.1.103 00:27 5.00s 0.08s 0.04s ssh root pts/4 192.168.1.104 00:34 1.00s 0.02s 0.01s w
Как только он у вас есть, найдите PID соответствующего сеанса tty с помощью команды PS.
ps -ft [tty]
ps -ft pts/4 UID PID PPID C STIME TTY TIME CMD root 155183 155092 0 00:34 pts/4 00:00:00 -bash root 163015 155183 0 00:35 pts/4 00:00:00 ps -ft pts/4
Наконец убейте идентификатор процесса сеанса.
kill -9 PID
# kill -9 155183
sudo pkill -9 -u login_name