Verwenden Sie pkill -U UID
oder pkill -u UID
oder Benutzername statt UID. Manchmal skill -u USERNAME
kann funktionieren, ein anderes Tool ist killall -u USERNAME
.
Skill war Linux-spezifisch und ist jetzt veraltet, und pkill ist portabler (Linux, Solaris, BSD).
pkill erlaubt sowohl numerische als auch symbolische UIDs, effektive und echte http://man7.org/linux/man-pages/man1/pkill.1.html
pkill - ... signalisiert Prozesse basierend auf Namen und anderen Attributen
-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.
Die Manpage von Skill sagt, dass es nur erlaubt ist, den Benutzernamen zu verwenden, nicht die Benutzer-ID:http://man7.org/linux/man-pages/man1/skill.1.html
skill, snice ... Diese Tools sind veraltet und nicht portierbar. Die Befehlssyntax ist schlecht definiert. Erwägen Sie die Verwendung von killall, pkill
-u, --user user
The next expression is a username.
killall ist unter Linux nicht als veraltet markiert, funktioniert aber auch nicht mit numerischen UIDs; einziger Benutzername:http://man7.org/linux/man-pages/man1/killall.1.html
killall - Prozesse nach Namen beenden
-u, --user
Kill only processes the specified user owns. Command names
are optional.
Ich denke, jedes Dienstprogramm, das zum Auffinden von Prozessen im Linux/Solaris-Stil /proc (procfs) verwendet wird, verwendet die vollständige Liste der Prozesse (dabei wird ein Readdir von /proc
ausgeführt). ). Ich denke, sie werden über /proc
iterieren digitale Unterordner und prüfen Sie jeden gefundenen Prozess auf Übereinstimmung.
Um eine Benutzerliste zu erhalten, verwenden Sie getpwent
(es wird ein Benutzer pro Anruf empfangen).
skill (procps &procps-ng) und killall (psmisc) Tools verwenden beide getpwnam
Bibliotheksaufruf zum Analysieren des Arguments von -u
Option, und nur der Benutzername wird analysiert. pkill
(procps &procps-ng) verwendet sowohl atol als auch getpwnam, um -u
zu parsen /-U
-Argument und erlauben sowohl numerische als auch textuelle Benutzerspezifizierer.
Wenn Sie -1 als Prozess-ID-Argument entweder an kill
übergeben Shell-Befehl oder den kill
C-Funktion, dann wird das Signal an alle Prozesse gesendet, die es erreichen kann, was in der Praxis alle Prozesse des Benutzers bedeutet, der den kill
ausführt Befehl oder Systemaufruf.
su -c 'kill -TERM -1' bob
In C (Fehlerprüfung weggelassen):
if (fork() == 0) {
setuid(uid);
signal(SIGTERM, SIG_DFL);
kill(-1, SIGTERM);
}
Wenn die pkill-Funktion auf Ihrer UNIX-/Linux-Distribution nicht verfügbar ist, können Sie den folgenden Befehl als Root-Benutzer ausführen:
ps -ef | grep username | grep -v grep | awk '{print $2}' | xargs kill
wobei Benutzername der Benutzer ist, dessen Prozesse Sie löschen möchten