procs - лучшая альтернатива команде ps для работы с процессами в Linux

Можно найти множество замен для top, инструмента CLI, который обеспечивает динамическое представление работающей системы в реальном времени. Есть знаменитый htop, асинхронный atop, который заставляет ядро записывать данные о запущенных процессах, и некоторые менее известные альтернативы, такие как btop, основанный на Node.js gtop и gotop, построенный на Go.

Но как насчет старого доброго ps?

ps (Process Status) – это древняя команда Unix, которая отображает снимок запущенных процессов. Она поддерживает опции Unix (с одним тире, как ps -ef ), BSD (без тире, как ps aux ) и GNU (с двумя тире, как ps --deselect ), и это самый классический инструмент CLI для мониторинга системных процессов.

ps – очень хорошо зарекомендовавшая себя и надежная команда. Тем не менее, это древний инструмент, и он заслуживает современного собрата.

Здесь на помощь приходят procs: procs – это замена ps, написанная на языке Rust, и она работает в Linux, BSD, macOS и Windows.

Я нашел procs пару лет назад и начал использовать его тогда, и с тех пор ни разу не пожалел об этом.

Хотя я сам тестировал его только на Linux (Arch Linux и Debian Linux) и macOS.

Что procs делает лучше?

Давайте сделаем все наоборот. Вместо того чтобы показывать вам, как его установить, а потом как им пользоваться, давайте я сначала попытаюсь убедить вас принять procs А потом, если вы убедитесь, я покажу вам, как установить – а это очень просто, поверьте мне.

Запустив procs из коробки, вы получите красивый красочный вывод:

По умолчанию в столбцах: PID, пользователь, TTY, процент CPU, процент памяти, время CPU и командная строка. Чтобы закрыть пейджер, нажмите букву Q; стрелки, страница вверх и страница вниз для навигации .

Возможно указать procs группировать процессы по дереву процессов с помощью флага --tree или -t:

Еще одна замечательная функция – поиск процесса по имени. Например, поиск по dnsmasq:

Возможность использовать булевы операции --and (или -a ), --or (или -o ), --nand (или -d ) и --nor (или -r ) для объединения нескольких поисковых строк:

Флаг -W позволяет объединить другие варианты с представлением моды watch:

Вы все еще можете контролировать, должны ли применяться цвета ( --color ), какой пейджер вы хотите ( --pager ), сортировать по возрастанию ( --sorta ) или по убыванию ( --sortd ), среди других опций, которые вы можете найти, позвонив по procs --help .

Также можно создать и установить конфигурационный файл для поведения по умолчанию – я не буду вдаваться в подробности, потому что на странице инструмента уже есть подробное объяснение.

Классная вещь, которую можно сделать с помощью конфигурационного файла, – это изменение колонок вывода – вы можете сделать это, передавая параметры командной строки, но гораздо удобнее сделать это в конфигурационном файле.

Некоторые интересные «виды» колонок, которые можно добавить в вывод, следующие:

  • Docker (имя контейнера Docker)
  • Env (переменные окружения)
  • Nice («хороший» приоритет)
  • Processor
  • StartTime
  • TcpPort (связанные TCP-порты)
  • WorkDir (текущий рабочий каталог процесса).

Установка procs

Надеюсь, вы уже успели немного увлечься procs, так что давайте посмотрим, как его установить.

На странице программы есть раздел Установка, в котором показано, как установить procs на несколько различных систем, таких как NixOS, Snapcraft, Homebrew (macOS), Alpine, Arch Linux, Windows и Fedora Core, причем все команды установки вполне стандартны.

Например, для установки в Arch Linux используйте классическую команду pacman:

sudo pacman -S procs

Если вы установили UPT, независимо от вашей системы, вы можете установить его, выполнив:

upt install procs

Что делать, если в моей системе нет пакета?

В этом случае, я надеюсь, в ней есть Rust cargo. В этой ситуации вы можете установить пакет, выполнив:

cargo install procs

Он установит procs в каталог ~/.cargo/bin/, убедитесь, что он находится в вашем каталоге PATH .

h2.Проблемы с разрешениями

В macOS обычные пользователи не имеют доступа к информации о процессах других пользователей. Нечто подобное происходит и в Linux, поэтому вам нужно запускать procs от имени root, если вы хотите разрешить эту функциональность.

В Linux вы можете добавить пользователей, которым вы хотите разрешить видеть информацию о процессах других пользователей, в специальную группу, назовём её procs, и включить её для sudoers:

sudo groupadd procs
cat<<EOF | sudo tee /etc/sudoers.d/procs
%procs  ALL= NOPASSWD: /usr/bin/procs
EOF

Замените /usr/bin/procs на абсолютный путь команды procs, который вы можете получить, выполнив:

which procs

Другое дело, что у меня были проблемы с manpage procs, и в Arch Linux, и в Debian Linux он не был установлен. Так что если у вас возникнет такая же проблема, то для её решения я использую флаг --help.

Заключение

Как я уже говорил, команда ps является классической и доступна во всех системах Linux. Однако если вы не ограничены использованием только команд GNU coreutils, современные утилиты, такие как procs, могут улучшить работу с терминалом.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен itsfoss.com

Похожие статьи

Комментарии (0)