В этой статье мы рассмотрим, как найти имя процесса по его идентификационному номеру (PID). Прежде чем перейти к решению задачи, давайте вкратце поговорим о том, как создаются и идентифицируются процессы в Linux.
Каждый раз, когда пользователь или система (Linux) запускает программу, ядро создаёт процесс. Процесс хранит в памяти сведения о выполнении программы, такие как входные и выходные данные, переменные и многое другое.
Важно отметить, что, поскольку Linux является многозадачной операционной системой, она одновременно выполняет несколько программ, а значит, каждый процесс должен быть идентифицирован отдельно.
Ядро идентифицирует каждый процесс с помощью идентификатора процесса (PID). Каждый экземпляр процесса должен иметь уникальный PID, который присваивается при вызове процесса. Это позволяет избежать ошибок при выполнении.
Файловая система /proc хранит информацию о текущих процессах в вашей системе, она содержит каталоги для каждого процесса.
/proc
содержимого более удобным способом, как показано ниже:ls /proc
или
ls /proc | less
В пронумерованных каталогах хранятся файлы с информацией о выполняемых процессах, где каждый номер соответствует PID.
Ниже приведен пример перечисления файлов для процесса systemd с помощью PID 1
.
ls /proc/1
Вы можете отслеживать процессы и их идентификаторы с помощью традиционных команд Linux, таких как ps, top и относительно новая команда glances, а также многих других, как в приведённых ниже примерах:
С помощью команды ps
можно вывести список запущенных процессов, включая их PID:
ps aux
С помощью команды top
можно в режиме реального времени просматривать запущенные процессы:
top
С помощью команды glances
можно в реальном времени отслеживать использование различных компонентов вашей системы, таких как процессор, память и диск:
glances
Чтобы узнать PID процесса, вы можете использовать pidof
— простую команду для вывода PID процесса:
pidof firefox pidof python pidof cinnamon
Возвращаясь к нашей теме, предположим, что вы уже знаете PID процесса. Вы можете вывести его имя с помощью приведённой ниже команды:
ps -p PID -o format
Где:
-p
определяет PID-o
format позволяет использовать определенный пользователем формат
Теперь давайте сосредоточимся на поиске имени процесса по его идентификатору с помощью пользовательского формата, то есть comm=
— это имя команды, совпадающее с именем процесса.
ps -p 2523 -o comm= ps -p 2295 -o comm=
Дополнительную информацию об использовании и параметрах см. на странице ps man.
man ps
На данный момент это всё! Если вы знаете какой-то другой способ узнать имя процесса по его PID, не стесняйтесь поделиться с нами в комментариях ниже.