Если я знаю PID номер процесса, как я могу получить его имя?
Если у меня есть PID номер процесса (на UNIX машине), как я могу узнать имя связанного с ним процесса?
Что мне нужно сделать?
Если у меня есть PID номер процесса (на UNIX машине), как я могу узнать имя связанного с ним процесса?
Что мне нужно сделать?
На всех POSIX-совместимых системах, а также в Linux, можно использовать ps
:
ps -p 1337 -o comm=
Здесь процесс выбирается по его PID с -p
. Опция -o
указывает формат вывода, comm
означает имя команды.
См. также: ps
- Проблема 6 базовых спецификаций открытых групп
Вы можете найти имя процесса или команду, используемую process-id или pid из
/proc/pid/cmdline
, выполнив
cat /proc/pid/cmdline
Здесь pid - это pid, для которого вы хотите найти имя For exmaple:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Чтобы найти имя процесса, используемого pid 2480, вы можете
# cat /proc/2480/cmdline
gnome-terminal
Чтобы получить путь к программе с помощью определенного пида, можно использовать:
ps ax|egrep "^ [PID]"
альтернативно можно использовать:
ps -a [PID]
Ты можешь воспользоваться картой. Я ищу PID 6649. И отсекаю дополнительные технологические детали.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# ls -la /proc/ID_GOES_HERE/exe
Пример:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
Аналогично slhck’s Answer , но полагается на файловые операции вместо вызовов команд:
MYPID=1
cat "/proc/$MYPID/comm"
```.
Вы также можете использовать awk в сочетании с ps
ps aux | awk '$2 == PID number for a process { print $0 }'
пример:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
для печати HEAD LINE вы можете использовать
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
Удивительно, но никто не упомянул опцию -f (полная команда) для ps. Мне нравится использовать ее с -e (все) и передавать результаты в grep, чтобы я мог сузить поиск.
ps -ef | grep <PID>
Это также очень полезно для просмотра полных команд, которые кто-то запускает, которые занимают много ресурсов на вашей системе. Это покажет вам опции и аргументы, переданные команде.
Я нахожу самым простым методом команду:
ps -awxs | grep pid
сделал простой скрипт, чтобы найти PID и использовать внутри bash скриптов… использовать с осторожностью!
Скриншот:
Андрэ