Убить весь процесс пользователей в Ubuntu?

20

Как убить весь процесс одного пользователя?

Когда я делаю, ps auxя получаю список процессов с несколькими пользователями, и я хочу, например, убить весь процесс пользователя name1! Что за команда делает это в Ubuntu?

user15992
источник
возможный дубликат Как я могу убить все процессы пользователя, используя их UID
Жиль "ТАК - перестать быть злым"
1
Если пользователи - реальные люди, это, вероятно, не очень хорошая идея. Я также думаю, что вы хотите убить процессы, чтобы сэкономить время. Это очень плохая идея. Например, службы в Ubuntu могут быть остановлены с помощью sudo service the-service-name stop. Процессы
уничтожения

Ответы:

27

В этом случае все довольно просто, вы можете использовать, killallчтобы убить или отправить любой другой сигнал сразу нескольким процессам. Один из вариантов «фильтрации» - это владелец:killall --user name1

njsg
источник
Я не знал об --userаргументе, спасибо!
JMTD
4
Следует отметить, что, killallнапример, в Solaris Unix убивает все запущенные процессы, которые он может! См .: en.wikipedia.org/wiki/Killall
donothingsuccessful
По сути, это
произошло в
14

Добавление другого варианта, потому что никто не упомянул об этом, и я не люблю killall(использование его на солярисе может привести к катастрофе).

pkill более портативный

pkill -u username
Патрик
источник
Я не нахожу killallв Ubuntu, но pkillуже установлен.
Давид.перез
2

Определите пользователя, затем killall -user <username>

У них будет процесс bash (или аналогичный), связанный с их уничтожением сеанса входа в систему, который уничтожит их сеанс.

Чтобы получить потенциально лучший обзор того, что делает пользователь - попробуйте pstree <username>

SuperBob
источник
Вам нужно две черты перед пользователем, например,--user
jmtd
1

Установить slay:

способность установить убить

Тогда выпустите slay some-user.

Имейте в виду, что если вы убьете вещи для пользователей, для которых вы не знаете цели, вы можете сделать вашу машину непригодной для использования (до перезагрузки).

Если вы действительно не хотите устанавливать slay:

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill

(Подожди немного)

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill -9
jmtd
источник
1
Кстати, awkможет сам что-то grep. Нет необходимости делать grep smth | awk, потому что вы можете использовать только awk '/smth/{...}'вместо этого.
Раш
Вот небольшая удобная функция для вас. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson