Ваша система Linux работает медленно? Или вам просто интересно, что происходит под капотом? Существует мощная встроенная программа под названием «ps», которая позволяет пользователям просматривать снимки процессов, запущенных в системе. Мы обсудим некоторые параметры, доступные для ps, и в заключение вы сможете проверить запущенные процессы на вашем компьютере с Linux, как опытный ботаник.
Введение
Большинство версий ps
поддерживают параметры стиля BSD (которые могут быть сгруппированы и НЕ ДОЛЖНЫ использоваться с тире), параметры стиля UNIX (которые могут быть сгруппированы и ДОЛЖНЫ использоваться с тире), и длинные параметры GNU (которым предшествуют два тире). В этой статье мы будем смешивать и использовать несколько типов опций с уклоном в стили UNIX. Например:
ps -u root u -sort=pid
- UNIX STYLE
-u root
определяет user = root - BSD STYLE
u
определяет отображение формата, ориентированного на пользователя. Это любимый вариант, поскольку выходной формат, созданный с его помощью, содержит очень полезную информацию. - GNU LONG OPTION
-sort
определяет порядок сортировки процесса. В этом случае сортируйте по идентификатору процесса (pid)
В этой статье предпочтение отдается вариантам UNIX, а BSD используется только для краткости. Например, команда
ps u
показывает процессы текущего пользователя, подключенные к терминалу, с «ориентированным на пользователя» форматом вывода. Чтобы получить тот же формат вывода с использованием параметров UNIX, требуется опция
ps -o "user,pid,pcpu,pmem,vsz,rss,tty,stat,bsdstart,bsdtime,args"
Пояснения аргументов этой опции «-o»:
- пользователь – эффективный идентификатор пользователя или имя пользователя процесса.
- pid – идентификатор процесса
- pcpu – время процессора, используемое процессом, разделенное на время работы процесса.
- pmem – процент физической памяти, используемый процессом
- vsz – размер виртуальной памяти процесса
- rss — неподкачиваемая физическая память, которую использовал процесс.
- tty – управляющий терминал процесса
- stat – состояние процесса, определяемое с помощью кодов состояния процесса (дополнительную информацию читайте на страницах руководства)
- start_time – время запуска команды
- время – совокупное время процессора, используемое процессом
- args – команда, используемая для запуска процесса, вместе с ее аргументами. (Это одна из причин, почему никогда не стоит запускать команду и вводить свой пароль в качестве аргумента командной строки. Любой другой пользователь в системе может запустить
ps
и просмотреть запущенные вами команды, а также со всеми переданными параметрами и аргументами).
В дальнейшем будет использоваться команда (ps), за которой следует опция BSD ‘u’ для указания форматирования вывода, а затем опции UNIX и GNU по мере необходимости.
Некоторые варианты PS
Запуск команды «ps» без аргументов показывает список процессов с тем же идентификатором пользователя, что и вызывающий, и связанных с тем же терминалом, что и вызывающий.
Чтобы показать все запущенные процессы:
ps u -e
Чтобы показать все процессы текущего пользователя:
ps u -u `whoami`
Чтобы показать все процессы текущего пользователя, но отсортированные по использованию процессора (по убыванию).
ПРИМЕЧАНИЕ. В приведенной ниже команде мы используем «-pcpu» для снижения процентного использования процессора. Для возрастания используйте «+pcpu» или просто «pcpu». Дополнительные спецификаторы сортировки можно найти на страницах руководства. Некоторые распространенные из них: pmem (использование памяти), start_time (время выполнения команды) и time (количество процессорного времени, использованное командой).
ps u -u `whoami` --sort=-pcpu
Чтобы отобразить все процессы текущего пользователя в древовидном формате:
ps u -jH -u `whoami`
Используя каналы, ps можно объединить с head, чтобы отобразить верхние процессы. Следующая команда сначала сортирует данные по использованию памяти, а затем передает данные через head, чтобы показать процессы, использующие больше всего памяти. По умолчанию Head отображает первые десять строк, поэтому эта команда покажет девять верхних процессов (выходной заголовок — это первая строка).
Примечание: «%mem» и «pmem» являются синонимами, как и «%cpu» и «pcpu».
ps u -u `whoami` --sort=-%mem | head
Чтобы показать одно и то же для всех процессов, независимо от пользователя, используйте параметр -e
:
ps u -e --sort=-%mem | head
Заключение
Существуют буквально сотни вариантов (хотя некоторые из них являются псевдонимами), и мы хотели бы услышать и увидеть ваши любимые методы использования. Поделитесь, пожалуйста, в комментариях ниже.