Я знаю, ввожу ли я w
Я могу добраться, список всех вошел в систему пользователи.
Я также знаю это killall -u USERNAME
удары все процессы, связанные с пользователем USERNAME
(включая удар / их оболочка, их процесс sshd, и т.д.). Насколько я знаю, что это - то, как Вы, как предполагается, "ударяете пользователя от" своего сервера.
Однако я не знаю, как начать всех пользователей. Сделайте я имею к так или иначе w | cut -d' ' -f1
получить список пользователей (и затем так или иначе снять изоляцию с пустой строки и поля USER и Вашего собственного имени пользователя) и канал, которые к-u управляют для killall
?
Или есть ли лучший путь?
Вы можете kill'm все с:
who | awk '$1 !~ /root/{ cmd="/sbin/pkill -KILL -u " $1; system(cmd)}'
необходимо быть корнем или использовать sudo.
Мышление, что уничтожение всех пользователей может быть опасным и повредить Вашу файловую систему. Плюс раздражают Ваших пользователей; что Вы ожидаете происходить, если один из них сделает что-то как mysql обслуживание, когда Вы уничтожаете их?
действительно необходимо использовать ps -ef | grep "user"
или что-то подобное для осмотра их процессов.
, Почему бы не предупредить их вместо этого?
shutdown -h +10 "Server is going down 10 minutes. Save your work and logout."
Записал этот сценарий также, который, кажется, работает:
#!/bin/bash
ME=$SUDO_USER
if [[ -z $ME ]]
then
echo "Must run script using sudo."
exit 1
fi
who | while read NAME REST
do
if [[ $NAME != $ME ]]
then
killall -u "${NAME}"
if [[ "$?" = "0" ]]
then
echo "Disconnecting ${NAME} from the system..."
else
echo "Could not disconnect ${NAME} from the system..."
fi
fi
done