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?

użytkownik15992
źródło
możliwy duplikat Jak zabić wszystkie procesy użytkownika przy użyciu ich identyfikatora UID
Gilles „SO- przestań być zły”
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

njsg
źródło
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
Patrick
źródło
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>

SuperBOB
źródło
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
jmtd
źródło
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