Wann immer ich einen Hintergrundprozess beenden muss, tue ich das ps -e | grep <process_name>
Was soetwas druckt 1766 ? 00:00:13 conky
, dann benutze ich die Prozess-ID dazu kill
so kill 1766
.
Kann ich das auf irgendeine Weise vereinfachen? Mach es schneller? die Anzahl der Eingaben reduzieren?
Antworten:
(TL, DR:
pgrep
,pkill
)Viele Unix - Varianten kamen mit dem
pgrep
und seinen Begleiternpkill
: Solaris , Linux (Teil des Standard - Prozess Dienstprogramme kann von Embedded - Linux - Systemen fehlen), FreeBSD , OpenBSD , NetBSD , ... aber nur von MacPorts auf OS X , nicht AIX , und nur vor kurzem in HP-UX . Daspgrep
Dienstprogramm zeigt die Prozess-ID von Prozessen an, die nach Name, Benutzer und einigen anderen Kriterien übereinstimmen. Das Argumentpgrep
wird als regulärer Ausdruck interpretiert , dass ein Teil des Prozesses der ausführbaren Namen (es sei denn Sie eine Option übergeben , um dies zu ändern) müssen übereinstimmen. Wenn Sie rufenpkill
stattpgrep
sendet das Dienstprogramm ein Signal, anstatt die Prozess-IDs anzuzeigen.Ein weiteres ähnliches Dienstprogramm ist pidof . Unter Linux wird es von SysVinit oder BusyBox bereitgestellt (daher finden Sie es häufig auf einem eingebetteten Linux-System ohne
pgrep
). es gibt auch ports auf anderen unix varianten. Daspidof
Dienstprogramm verfügt über weniger Optionen, es stimmt meist nur mit vollständigen Namen der ausführbaren Dateien überein. Das zugehörige Dienstprogrammkillall
sendet ein Signal an die entsprechenden Programme¹.¹ Beachten Sie, dass dies
killall
unter Solaris und möglicherweise anderen Unix-Varianten eine andere Bedeutung hat.killall
Geben Sie unter Solaris nicht als root ein.quelle
killall ProcessName
(Dieser Befehl hat den Nachteil, dass Sie den Prozessnamen eines Programms nicht immer kennen.)pidof ProccessName
undkill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
Probieren Sie diese eine Zeile aus und verwenden Sie sie aus dem Verlauf Ihrer Bash wieder, oder erstellen Sie besser einen Alias dafür.quelle
pidof
scheint ein bisschen einfacher, aber esWährend Hanan einige gute Vorschläge hat, werde ich hinzufügen
pgrep
/pkill
. Sie ermöglichen eine genauere Kontrolle darüber, welchen Prozess Sie finden, und reguläre Ausdrücke, wenn Sie den genauen Prozess nicht kennen, den Sie zum Beenden benötigen.PS Hanans
pidof
könnenkill
direkt mit Backticks gefüttert werden:quelle
pkill
war genau das, wonach ich gesucht habe, ich kenne die meiste Zeit den Prozessnamen, meistens dasconky
oderfirefox
oderchrome
oder so ähnlich. Vielen DankWie wäre es damit -
Beispiel:
Aktualisieren:
Leider ist diese nicht erfüllt offenbar nicht die Anforderung von weniger Typisierung so ein guter Weg , es zu tun wäre hinzuzufügen , ein
function
zu Ihrem.bashrc
,.profile
oder was auch immer dem Startskript. Die Funktion kann so etwas sein -Nach dem Hinzufügen können Sie einfach den Namen Ihres Prozesses übergeben:
quelle