Основываясь на идеях, опубликованных здесь, я создал эту маленькую строчку кода:
sudo vmmap notifyd | grep -A3 'Summary'
который отображает раздел Summary (3 строки) вывода vmmap. Я использовал notifyd
в этом примере, но вы можете заменить его на любой известный вам PID.
Эта строка будет пытаться перечислить все строки Summary всех запущенных процессов. Очевидно, что некоторые потерпят неудачу, потому что их идентификатор процесса уже пропал (процесс завершен), но в целом я обнаружил, что это отличный способ прокрутить список информации о памяти и определить топ-своппер.
ps -o pid= -xa | awk '{print $1}' | xargs -n 1 sudo vmmap | grep -A3 'Summary'
Отредактировано: некоторые анонимные пользователи увидели, что эта последняя командная строка нуждается в улучшении, потому что, очевидно, оригинальный вариант больше не работает. Так что большое спасибо, кто бы вы ни были, и мне жаль, что ваши изменения были отклонены. (Первая команда ранее прочитала 'ps xa' и привела к сбою vmmap из-за заголовка ps, брошенного в него)
Дальнейшее улучшение: если вы хотите узнать название программы сразу, используйте это небольшое изменение
ps -o pid= -xa | awk '{print $1}' | xargs -n 1 sudo vmmap | egrep 'swapped_out|Path'
Небольшое изменение на другом конце этой команды позволяет вам фильтровать определенные имена программ или компоненты пути командной строки. Здесь мы рассмотрим все процессы из библиотеки / PrivateFrameworks только для примера.
ps -o pid,command= -xa | grep 'Library/PrivateFrameworks' | awk '{print $1}' | xargs -n 1 sudo vmmap |