Jak posortować dane wyjściowe ps według czasu rozpoczęcia procesu?

66

Czy istnieje sposób na sortowanie danych wyjściowych ps według czasu rozpoczęcia procesu, więc najnowsze są na górze lub na dole?

W systemie Linux?

Na SysV5?

Na Macu?

Dean Smith
źródło

Odpowiedzi:

87

Powinno to działać w systemach Linux i SysV5

ps -ef --sort=start_time
Sekenre
źródło
Działa to dokładnie zgodnie z życzeniem, dzięki. Po dalszych kopaniach nie jestem pewien, czy jest to możliwe w systemie Mac OS bez odrobiny awk
Dean Smith,
1
czas_początkowy pracował. lstart nie. RHEL
Felipe Alvarez
1
jak odwrócić zamówienie?
Phu Nguyen,
2
@PhuNguyen nieco spóźnił się na imprezę, ale może ktoś inny może to wykorzystać. Możesz odwrócić kolejność, przesyłając dane wyjściowe tac.
Paul
1
@Stephane spróbuj tego:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre
11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started
rkthkr
źródło
2
Obawiam się, że żaden z tych rodzajów według czasu rozpoczęcia. Wyświetla czas rozpoczęcia, ale nie sortuje.
Dean Smith,
2
Wyłapała mnie także różnica między lstart i start_time - lstartdaje pełny znacznik czasu, ale nie może być użyty jako klucz sortowania. start_timepodaje zwykłą kolumnę „w ciągu ostatnich 24 godzin, w przeciwnym razie data” i może być używany jako klucz sortowania. Oba dają w nagłówku „STARTED”.
LHMathies,
czas w ciągu ostatniej godziny: jeśli proces został uruchomiony wczoraj o godzinie późniejszej niż dzisiaj, pojawi się po dzisiejszym procesie ... nie można go użyć według sortowania, chyba że odrobina „awk” zmieni to
Olivier Dulac
@OlivierDulac: nie dla mnie. 15/12 15:40pojawia się wcześniej 16/12 15:39, tak jak 13:39wcześniej 15:38.
Gauthier
1
Istart nie działał dla mnie. czas_początkowy zrobił.
Felipe Alvarez
5

Oprócz świetnych odpowiedzi powyżej, czasami chcę po prostu zobaczyć 20 najlepszych przestępców według procesu posortowanego malejąco według czasu, procesora i zużycia pamięci.

Do tego używam:

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

Byłoby to na platformie CentOS, chociaż podobają mi się te same wyniki na Fedorze.

Aha i dla uśmiechów, czasami chcę usunąć zestaw procesów, więc po prostu używam wariantu powyżej, który zawiera trochę akcji grep -v, takich jak:

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

źródło
--sortz psnie działa dla mnie. Poleganie na muszli sort. +1
kellogs
3

Nie mogę jeszcze komentować, ale aby odpowiedzieć na pytanie, jak odwrócić kolejność sortowania według czasu, po prostu umieść znak minus ( -) przed polem.
Przykład:ps -elf --sort=-start_time

Barry S.
źródło
2

Lub wypróbuj „ls”, ponieważ pozwala on na formaty czasu łatwe do sortowania i łatwiejsze w użyciu.

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

Wyświetla datę / czas w epoce, najnowsze procesy na górze.

Jim Black
źródło
pokazuje to tylko
stawki
0

Wypróbuj proste polecenie:

ps | sort -k7 -n

-k7dla kolumny czasu i -ndla liczb.

Przykład

Khushboo Goyal
źródło