Zabić cały proces użytkowników w Ubuntu?


20

Jak zabić cały proces jednego użytkownika?

Kiedy to robię ps aux, otrzymuję listę procesów z kilkoma użytkownikami i chcę na przykład zabić cały proces użytkownika name1! Jakie polecenie ma to zrobić w Ubuntu?



1
Jeśli użytkownicy są prawdziwymi osobami, prawdopodobnie nie jest to dobry pomysł. Myślę też, że chcesz zabić procesy, aby zaoszczędzić czas. To bardzo zły pomysł. Na przykład usługi w Ubuntu można zatrzymać sudo service the-service-name stop. Procesy zabijania mogą pozostawić uszkodzone pliki, bazy danych itp.
tiktak

Odpowiedzi:


27

W tym przypadku jest to dość proste, możesz użyć killalldo zabicia lub wysłania dowolnego innego sygnału do wielu procesów jednocześnie. Jedną z opcji „filtrowania” jest właściciel:killall --user name1


Nie wiedziałem o --userkłótni, dzięki!
jmtd

4
Należy zauważyć, że killallnp. W Solarisie Unix zabija wszystkie działające procesy, jakie potrafi! Zobacz: en.wikipedia.org/wiki/Killall
donothingsuccessfully

To zasadniczo wylogowało się na Ubuntu 18.
Manohar Reddy Poreddy

14

Dodanie kolejnej opcji, ponieważ nikt o niej nie wspominał, a ja nie lubię killall(używanie jej na solaris może spowodować katastrofę).

pkill jest bardziej przenośny

pkill -u username

Nie mogę znaleźć killallw Ubuntu, ale pkilljest już zainstalowany.
david.perez

2

Następnie zidentyfikuj użytkownika killall -user <username>

Będą mieli bash (lub podobny) proces związany z zabijaniem sesji logowania, który zabije ich sesję.

Aby uzyskać potencjalnie lepszy przegląd tego, co robi użytkownik - spróbuj pstree <username>


potrzebujesz dwóch myślników przed użytkownikiem, np.--user
jmtd

1

Zainstaluj slay:

aptitude install slay

Potem problem slay some-user.

Pamiętaj, że jeśli zabijasz rzeczy dla użytkowników, dla których nie znasz celu, możesz uniemożliwić korzystanie z komputera (do momentu ponownego uruchomienia).

Jeśli naprawdę nie chcesz instalować slaya:

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

(Poczekaj chwilę)

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

1
Btw awkmoże coś zepsuć. Nie musisz tego robić grep smth | awk, bo możesz awk '/smth/{...}'zamiast tego użyć .
pędzi

Oto przydatna mała funkcja dla Ciebie. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.