Darüber, wie man den ps-Befehl selbst aus der Ausgabe ausschließt, wenn man den “ps”-Befehl auf der Bash-Sprache Befehlszeile von Linux-Computern und Servern ausführt.
Wenn Sie den ps-Befehl ausführen, landen der ps-Befehl selbst und die Befehle, die ihn pipen, ebenfalls in der Ausgabe.
Zum Beispiel, wenn Sie überprüfen möchten, ob node.js möglicherweise im Hintergrund in der aktuellen Shell läuft.
tty="$( tty | ag -o '\d+' )" ; ps aux | ag "(tty|pts)/${tty}" | awk '!/\s(Ss)\s/'
Dies erzeugt eine Ausgabe wie die folgende:

yuis 17361 0.0 0.0 1175236 26304 pts/8 Sl 00:49 0:01 node tmp.js
yuis 18990 0.0 0.0 873500 26608 pts/8 Sl 01:21 0:00 node tmp.js
yuis 20377 0.0 0.0 874012 26656 pts/8 Sl 01:48 0:00 node tmp.js
yuis 24704 0.0 0.0 16676 1868 pts/8 R 02:44 0:00 ps aux
yuis 24705 0.0 0.0 11416 1080 pts/8 R 02:44 0:00 ag (tty|pts)/8
yuis 24706 0.0 0.0 25676 1824 pts/8 R 02:44 0:00 bash -l -i
Von dieser Ausgabe ist nur der folgende Teil wichtig:
yuis 17361 0.0 0.0 1175236 26304 pts/8 Sl 00:49 0:01 node tmp.js
yuis 18990 0.0 0.0 873500 26608 pts/8 Sl 01:21 0:00 node tmp.js
yuis 20377 0.0 0.0 874012 26656 pts/8 Sl 01:48 0:00 node tmp.js
Wenn Sie eine Ausgabe wie diese wünschen, gehen Sie wie folgt vor:
Da die Ausgabe von ps aux nach Befehlsstartzeit sortiert ist, können Sie die Zeile, die ps aux enthält, und nachfolgende Zeilen mit sed ‘/ps aux/,+1 d’ löschen.
tty="$( tty | ag -o '\d+' )" ; ps aux | ag "(tty|pts)/${tty}" | awk '!/\s(Ss)\s/' | sed '/ps aux/,+1 d'
