Comment trier la sortie ps par heure de début du processus?

66

Existe-t-il un moyen de trier la sortie ps par heure de début du processus, de sorte que les plus récents se trouvent en haut ou en bas?

Sur Linux?

Sur SysV5?

Sur Mac?

Dean Smith
la source

Réponses:

87

Cela devrait fonctionner sous Linux et SysV5

ps -ef --sort=start_time
Sekenre
la source
Cela fonctionne exactement comme demandé, merci. Après plus de creuser, je ne suis pas sûr que ce soit possible sur Mac OS sans un peu d'awk
Dean Smith
1
start_time a travaillé. Pas le début. RHEL
Felipe Alvarez
1
Comment puis-je inverser la commande?
Phu Nguyen
2
@PhuNguyen peu en retard à la fête, mais peut-être que quelqu'un d'autre a une utilisation pour cela. Vous pouvez inverser l'ordre en passant la sortie par la canalisation tac.
Paul
1
@ Stephane essayer ceci:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre
11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started
rkthkr
la source
2
Je crains qu'aucune de ces sortes par l'heure de début. Il affiche l'heure de début, mais ne trie pas.
Dean Smith le
2
La différence entre lstart et start_time m'a également interpellée - lstartdonne un horodatage complet, mais ne peut pas être utilisée comme clé de tri. start_timedonne la colonne habituelle 'heure dans les dernières 24 heures, date sinon', et peut être utilisée comme clé de tri. Les deux donnent 'STARTED' dans l'en-tête.
LHMathies
heure de la dernière heure: si un processus a été lancé hier à une heure plus tard qu'aujourd'hui, il apparaîtra après le processus d'aujourd'hui ... ne peut pas être utilisé par sorte, à moins qu'un peu de "awk" change cela
Olivier Dulac
@OlivierDulac: pas pour moi. 15/12 15:40apparaît avant 16/12 15:39, comme il 13:39apparaît avant 15:38.
Gauthier
1
lstart n'a pas fonctionné pour moi. start_time a fait.
Felipe Alvarez
5

En plus des bonnes réponses ci-dessus, je souhaite parfois uniquement voir les 20 principaux délinquants classés par processus, en ordre décroissant d'heure, de pourcentage de l'unité centrale et de l'utilisation de la mémoire.

Pour cela j'utilise:

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

Ce serait sur une plate-forme CentOS, même si j'ai eu les mêmes résultats sur Fedora.

Oh, et pour les sourires, je veux parfois supprimer un ensemble de processus, alors j’utilise simplement une variante de ce qui précède qui inclut un peu d’action grep -v, telle que:

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

la source
--sortde psne fonctionne pas pour moi. S'appuyant sur la coquille sort. +1
kellogs
3

Je ne peux pas encore commenter, mais pour répondre à la question de savoir comment inverser l'ordre d'un tri temporel, il suffit de mettre un signe moins ( -) devant le champ.
Exemple:ps -elf --sort=-start_time

Barry S
la source
2

Ou essayez 'ls', car il permet des formats de temps faciles à trier et à utiliser.

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

Affiche la date et l'heure de l'époque, les derniers processus en haut.

Jim Black
la source
cela ne montre que les pids
elig
0

Essayez une commande simple:

ps | sort -k7 -n

-k7pour la colonne de temps et -npour numérique.

Exemple

Khushboo Goyal
la source