Wie sortiere ich die ps-Ausgabe nach Prozessstartzeit?

66

Gibt es eine Möglichkeit, die ps-Ausgabe nach Prozessstartzeit zu sortieren, sodass die neuesten entweder oben oder unten angezeigt werden?

Unter Linux?

Auf SysV5?

Auf dem Mac?

Dean Smith
quelle

Antworten:

87

Dies sollte unter Linux und SysV5 funktionieren

ps -ef --sort=start_time
Sekenre
quelle
Dies funktioniert genau wie gewünscht, danke. Nach weiteren Grabungen bin ich mir nicht sicher, ob dies unter Mac OS ohne ein bisschen awk möglich ist
Dean Smith
1
start_time hat funktioniert. lstart nicht. RHEL
Felipe Alvarez
1
Wie kann ich die Bestellung stornieren?
Phu Nguyen
2
@PhuNguyen etwas zu spät zur Party, aber vielleicht hat jemand anderes eine Verwendung dafür. Sie können die Reihenfolge umkehren, indem Sie die Ausgabe durchleiten tac.
Paul
1
@Stephane versuchen Sie Folgendes:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre
11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started
rkthkr
quelle
2
Ich fürchte, keine dieser Sorten ist zum Startzeitpunkt. Die Startzeit wird angezeigt, aber nicht sortiert.
Dean Smith
2
Der Unterschied zwischen lstart und start_time hat mich ebenfalls überrascht - lstartgibt einen vollständigen Zeitstempel, kann aber nicht als Sortierschlüssel verwendet werden. start_timegibt die übliche Spalte "Zeit innerhalb der letzten 24 Stunden, Datum ansonsten" an und kann als Sortierschlüssel verwendet werden. Beide geben 'STARTED' in der Kopfzeile an.
LHMathies
Zeit innerhalb der letzten Stunde: Wenn ein Prozess gestern zu einem späteren Zeitpunkt als heute gestartet wurde, wird er nach dem heutigen Prozess angezeigt ... kann nicht sortiert verwendet werden, es sei denn, ein bisschen "awk" ändert dies.
Olivier Dulac
@OlivierDulac: nichts für mich. 15/12 15:40erscheint vorher 16/12 15:39, genauso wie 13:39zuvor 15:38.
Gauthier
1
lstart hat bei mir nicht funktioniert. start_time hat.
Felipe Alvarez
5

Zusammen mit den großartigen Antworten oben möchte ich manchmal nur die Top-20-Täter nach Prozess in absteigender Reihenfolge nach Zeit, CPU-Auslastung und Speichernutzung anzeigen.

Dafür benutze ich:

ps auxww --sort=lstart | sort -r -k3,4 | head -20

Dies wäre auf einer CentOS-Plattform, obwohl ich die gleichen Ergebnisse auch auf Fedora genossen habe.

Oh und zum Grinsen möchte ich manchmal eine Reihe von Prozessen entfernen, also verwende ich einfach eine Variante auf der obigen, die ein bisschen grep -v-Aktion enthält, wie zum Beispiel:

ps auxww --sort=lstart | sort -r -k3,4 | grep -v "sbin/httpd" | head -20

quelle
--sortvon psfunktioniert bei mir nicht. Auf Muschel bauen sort. +1
kellogs
3

Ich kann noch keinen Kommentar abgeben, aber um die Frage zu beantworten, wie die Reihenfolge einer Zeitsortierung umgekehrt werden kann, setzen Sie einfach ein Minuszeichen ( -) vor das Feld.
Beispiel:ps -elf --sort=-start_time

Barry S
quelle
2

Oder versuchen Sie 'ls', da es Zeitformate ermöglicht, die einfach zu sortieren und einfacher zu verwenden sind.

( cd /proc; ls -td --full-time --time-style=+%s [0123456789]*; )

Gibt das Datum / die Uhrzeit in der Epoche aus, die neuesten Procs oben.

Jim Black
quelle
Dies zeigt nur die Pids
Elig
0

Versuchen Sie es mit einem einfachen Befehl:

ps | sort -k7 -n

-k7für die Zeitspalte und -nfür numerisch.

Beispiel

Khushboo Goyal
quelle