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


20

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

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



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

Ответы:


27

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


Я не знал об --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>


Вам нужно две черты перед пользователем, например,--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

1
Кстати, awkможет сам что-то grep. Нет необходимости делать grep smth | awk, потому что вы можете использовать только awk '/smth/{...}'вместо этого.
Раш

Вот небольшая удобная функция для вас. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.