Usa pkill -U UID
o pkill -u UID
o nome utente invece di UID. A volte skill -u USERNAME
potrebbe funzionare, un altro strumento è killall -u USERNAME
.
Skill era specifico per Linux ed è ora obsoleto, mentre pkill è più portabile (Linux, Solaris, BSD).
pkill consente UID sia numerici che simbolici, effettivi e reali http://man7.org/linux/man-pages/man1/pkill.1.html
pkill - ... segnala i processi in base al nome e ad altri attributi
-u, --euid euid,... Only match processes whose effective user ID is listed. Either the numerical or symbolical value may be used. -U, --uid uid,... Only match processes whose real user ID is listed. Either the numerical or symbolical value may be used.
La pagina man di skill dice che è consentito usare solo il nome utente, non l'id utente:http://man7.org/linux/man-pages/man1/skill.1.html
abilità, furbizia... Questi strumenti sono obsoleti e introvabili. La sintassi del comando è mal definita. Prendi in considerazione l'utilizzo di killall, pkill
-u, --user user The next expression is a username.
killall non è contrassegnato come obsoleto in Linux, ma non funzionerà nemmeno con UID numerico; solo nome utente:http://man7.org/linux/man-pages/man1/killall.1.html
killall - termina i processi per nome
-u, --user Kill only processes the specified user owns. Command names are optional.
Penso che qualsiasi utility utilizzata per trovare processi in stile Linux/Solaris /proc (procfs) utilizzerà l'elenco completo dei processi (facendo un po' di readdir di /proc
). Penso che itereranno su /proc
digital sottocartelle e controlla ogni processo trovato per la corrispondenza.
Per ottenere l'elenco degli utenti, usa getpwent
(otterrà un utente per chiamata).
skill (procps &procps-ng) e killall (psmisc) usano entrambi getpwnam
chiamata alla libreria per analizzare l'argomento di -u
opzione e verrà analizzato solo il nome utente. pkill
(procps &procps-ng) usa sia atol che getpwnam per analizzare -u
/-U
argomento e consentire l'identificatore utente sia numerico che testuale.
Se passi -1 come argomento ID processo a kill
comando shell o kill
C, quindi il segnale viene inviato a tutti i processi che può raggiungere, che in pratica significa tutti i processi dell'utente che eseguono il kill
comando o chiamata di sistema.
su -c 'kill -TERM -1' bob
In C (controllo degli errori omesso):
if (fork() == 0) {
setuid(uid);
signal(SIGTERM, SIG_DFL);
kill(-1, SIGTERM);
}
Se la funzione pkill non è disponibile sulla tua distribuzione UNIX / Linux, puoi eseguire il seguente comando come utente root:
ps -ef | grep username | grep -v grep | awk '{print $2}' | xargs kill
dove username è l'utente che elabora i processi che desideri eliminare