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