Можно найти множество замен для 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(«хороший» приоритет)ProcessorStartTimeTcpPort(связанные 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, могут улучшить работу с терминалом.




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