Uccidi tutti i processi degli utenti in Ubuntu?


20

Come uccidere tutti i processi di un utente?

Quando realizzo ps auxottengo un elenco di processi con diversi utenti e name1ad esempio desidero interrompere tutti i processi dell'utente ! Qual è un comando per farlo in Ubuntu?



1
Se gli utenti sono persone reali questa probabilmente non è una buona idea. Penso anche che tu voglia uccidere i processi per risparmiare tempo. Questa è una pessima idea. Ad esempio, è possibile interrompere l'utilizzo dei servizi in Ubuntu sudo service the-service-name stop. I processi di uccisione potrebbero lasciare file, database, ecc
Corrotti

Risposte:


27

In questo caso, è piuttosto semplice, puoi usare killallper uccidere, o inviare qualsiasi altro segnale, a un sacco di processi contemporaneamente. Una delle opzioni di "filtro" è il proprietario:killall --user name1


Non ero a conoscenza --userdell'argomento, grazie!
jmtd,

4
Va notato che killallad esempio Solaris Unix uccide tutti i processi in esecuzione che può! Vedi: en.wikipedia.org/wiki/Killall
donothingsuccedibilmente

Questo essenzialmente si è disconnesso da Ubuntu 18.
Manohar Reddy Poreddy

14

Aggiungere un'altra opzione perché nessuno l'ha menzionata e non mi piace killall(usarla su Solaris può causare disastri).

pkill è più portatile

pkill -u username

Non trovo killallin Ubuntu, ma pkillè già installato.
david.perez,

2

Identifica l'utente, quindi killall -user <username>

Avranno un processo bash (o simile) associato alla loro uccisione della sessione di accesso che ucciderà la loro sessione.

Per avere una panoramica potenzialmente migliore di ciò che un utente sta facendo, prova pstree <username>


sono necessari due trattini prima dell'utente, ad es.--user
jmtd

1

Installa slay:

aptitude install slay

Quindi rilasciare slay some-user.

Tenere presente che se si eliminano elementi per utenti per i quali non si conosce lo scopo, è possibile rendere la macchina inutilizzabile (fino al riavvio).

Se davvero non vuoi installare slay:

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

(aspettare un po)

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

1
Btw awkpuò grep qualcosa in sé. Non c'è bisogno di fare grep smth | awk, perché puoi usare solo awk '/smth/{...}'invece.
precipita il

Ecco una piccola funzione utile per te. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.