Hintergrund
Ich verwende einen SSH-Server und habe diesen Benutzer, den ich löschen möchte. Ich kann diesen Benutzer nicht löschen, da er derzeit einige Prozesse ausführt, die ich zuerst beenden muss.
Dies ist die Pipeline, die ich derzeit verwende, um alle Prozess-IDs des Benutzers herauszufinden, den ich derzeit verwende:
ps -u user | awk '{print $1;}'
Die Ausgabe sieht folgendermaßen aus:
PID
2121
2122
2124
2125
2369
2370
Ich möchte dies weiterleiten kill -9
, um alle Prozesse abzubrechen, damit ich diesen dummen Benutzer wie folgt löschen kann:
ps -u user | awk '{print $1;}' | sudo xargs kill -9
Dies funktioniert aber aufgrund des PID
Headers nicht:
kill: failed to parse argument: 'PID'
Die Frage
Ich denke, dass es einen einfachen Unix-Befehl geben muss, um die erste Eingabezeile zu entfernen.
Mir ist bewusst, dass ich dies verwenden kann, tail
aber ich möchte nicht zählen, wie viele Zeilen die Eingabe enthält, um genau herauszufinden, wie viele ich anzeigen möchte.
Ich suche etwas wie head
oder tail
aber invertiert (anstatt nur den ersten / letzten Teil des Streams anzuzeigen , wird alles außer dem Anfang / Ende des Streams angezeigt ).
Hinweis
Es gelang mir, dieses Problem zu lösen, indem ich es einfach | grep [[:digit:]]
nach meinem awk
Befehl hinzufügte, aber ich suche immer noch nach einer Möglichkeit, die erste Zeile einer Datei zu löschen, da ich denke, dass dies in anderen Szenarien sehr nützlich wäre.
awk
Befehl) funktioniert.
NR
zawk 'NR>1 {print $1;}'
. Besser noch - benutzepgrep -u
oderpkill -u