Вбити всіх користувачів користувачів в Ubuntu?


20

Як вбити весь процес одного користувача?

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



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

Відповіді:


27

У цьому випадку це досить просто, ви можете використовувати, killallщоб вбити або надіслати будь-який інший сигнал, щоб купу процесів одразу. Один з варіантів "фільтрації" - це власник:killall --user name1


Я не знав --userаргументу, дякую!
jmtd

4
Слід зазначити, що, killallнаприклад, Solaris Unix вбиває всі запущені процеси, які він може! Дивіться: en.wikipedia.org/wiki/Killall
donothings успішно

Це, по суті,
вийшло

14

Додавання іншого варіанту, тому що ніхто про нього не згадував, і мені це не подобається killall(використання його на solaris може спричинити катастрофу).

pkill є більш портативним

pkill -u username

Я не знаходжу killallв Ubuntu, але pkillвін уже встановлений.
david.perez

2

Визначте користувача тоді killall -user <username>

У них відбудеться баш (або подібний) процес, пов’язаний із вбивством сеансу входу, який уб'є їх сеанс.

Щоб отримати потенційно кращий огляд того, що робить користувач - спробуйте pstree <username>


Вам потрібні дві тире перед користувачем, наприклад--user
jmtd

1

Встановити slay:

здатність встановити 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
Btw awkможе щось схопити на себе. Не потрібно цього робити 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.