Как отсортировать вывод ps по времени запуска процесса?


66

Есть ли способ отсортировать вывод ps по времени запуска процесса, чтобы новейшие находились либо сверху, либо снизу?

В линуксе?

На SysV5?

На маке?

Ответы:


87

Это должно работать на Linux и SysV5

ps -ef --sort=start_time

Это работает именно так, как просили, спасибо. После дальнейших раскопок я не уверен, что это возможно в Mac OS без небольшого количества awk
Дин Смит

1
start_time сработало. Это не так. РЕЛ
Фелипе Альварес

1
как поменять порядок?
Фу Нгуен

2
@PhuNguyen немного опоздал на вечеринку, но, может быть, кто-то еще использует это. Вы можете изменить порядок, пропустив вывод tac.
Пол

1
@Stephane попробуйте это:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre

11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started

2
Боюсь, что ни один из этих видов по времени начала. Отображает время начала, но не сортирует.
Дин Смит

2
Разница между lstart и start_time меня также поразила - lstartдает полную метку времени, но не может использоваться в качестве ключа сортировки. start_timeдает обычное время в течение последних 24 часов, дата в противном случае столбец, и может использоваться в качестве ключа сортировки. Оба дают «STARTED» в заголовке.
LHMathies

время в течение последнего часа: если процесс был запущен вчера во время позже, чем сегодня, он появится после сегодняшнего процесса ... не может быть использован для сортировки, если только немного «awk» не изменит это
Olivier Dulac

@OlivierDulac: не для меня. 15/12 15:40появляется раньше 16/12 15:39, как и 13:39раньше 15:38.
Готье

1
Istart не работал для меня. start_time сделал.
Фелипе Альварес

5

Наряду с отличными ответами, приведенными выше, иногда мне просто хочется увидеть 20 лучших нарушителей по процессам, отсортированным по убыванию по времени, процентам процессора и использованию памяти.

Для этого я использую:

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

Это было бы на платформе CentOS, хотя я наслаждался такими же результатами и на Fedora.

Да, и для ухмылок я иногда хочу удалить набор процессов, поэтому я просто использую вариант, описанный выше, который включает в себя немного действия grep -v, например:

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

--sortу psменя не работает. Опираясь на оболочку sort. +1
kellogs

3

Я пока не могу комментировать, но чтобы ответить на вопрос о том, как изменить порядок сортировки по времени, просто поставьте знак минус ( -) перед полем.
Пример:ps -elf --sort=-start_time


2

Или попробуйте 'ls', так как он позволяет форматов времени легко сортировать и использовать проще.

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

Выводит дату / время в эпоху, новейшие процы вверху.


это только показывает pids
Элиг

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.