Ich suche nach einer einzelnen Zeile, die die PID eines laufenden Prozesses zurückgibt.
Derzeit habe ich:
ps -A -o pid,cmd|grep xxx|head -n 1
Und das gibt die Faust zurück pid, command
. Ich brauche nur die erste Nummer aus der Ausgabe und ignoriere den Rest. Ich nehme an sed
oder awk
würde hier helfen, aber meine Erfahrung mit ihnen ist begrenzt.
Auch dies hat ein anderes Problem, es wird die pid von grep zurückgeben, wenn das xxx nicht läuft.
Es ist wirklich wichtig, eine einzige Zeile zu haben, da ich die Ausgabe wiederverwenden möchte, um etwas anderes zu tun, beispielsweise diesen Prozess zu beenden.
Antworten:
Wenn Sie nur die pid des Prozesses möchten, können Sie verwenden,
pgrep
wenn verfügbar.pgrep <command>
Gibt die PID des Befehls zurück (oder eine Liste von PIDs, falls mehr als eine Instanz des Befehls ausgeführt wird; in diesem Fall können Sie einenhead
oder andere geeignete Befehle verwenden).Hoffe, dies hilft!
quelle
kill `pgrep xxx`
pkill
.Nur noch ein Befehl erforderlich; Sie möchten nur das erste Feld aus einer Zeile mit durch Leerzeichen getrennten Werten:
Gut zwei. Ich habe ein weiteres grep hinzugefügt, um grep selbst aus der Ausgabe zu entfernen.
quelle
Verwenden Sie einfach pgrep, es ist viel einfacher
Oben wird der älteste Prozess mit dem genauen Namen ausgewählt
quelle
pkill
abzubrechen, wäre (mit den gleichen Argumenten) die direkteste Wahl.pidof xxx
wird unter Linux ausreichenquelle
Läuft auf Cygwin, daher kann ich -A und -o nicht verwenden, aber so ähnlich:
quelle
Sie können so etwas tun
dann muss xxx der Prozessname sein und grep wird wegen des Ankers nicht aufgenommen ^
quelle