225

Если у меня есть номер PID для процесса (на компьютере с UNIX), как я могу узнать имя связанного с ним процесса?

Что мне нужно сделать?

10 ответов10

244

На всех POSIX-совместимых системах и в Linux вы можете использовать ps:

ps -p 1337 -o comm=

Здесь процесс выбирается по его PID с -p . Опция -o указывает формат вывода, comm означает имя команды.

Смотрите также: ps - Открытая группа базовых спецификаций, выпуск 6

43

Вы можете найти имя процесса или команду, используемую идентификатором процесса или pid из

/proc/pid/cmdline

при выполнении

cat /proc/pid/cmdline

Здесь pid - это pid, для которого вы хотите найти имя
Например:

 # 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
13

Чтобы получить путь к программе, используя определенный pid, вы можете использовать:

ps ax|egrep "^ [PID]"

В качестве альтернативы вы можете использовать:

ps -a [PID]

8
# 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
7

Вы можете использовать pmap. Я ищу PID 6649. И отрезать лишние детали процесса.

$ pmap 6649 | head -1
6649:   /usr/lib64/firefox/firefox
3

Вы также можете использовать 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
3

Схоже с ответом slhck, но полагаясь на файловые операции вместо командных вызовов:

MYPID=1
cat "/proc/$MYPID/comm"
2

Удивительно, но никто не упомянул опцию -f (полная команда) для ps. Мне нравится использовать его с -e (все) и направлять результаты в grep, чтобы я мог сузить область поиска.

ps -ef | grep <PID>

Это также очень полезно для просмотра полных команд, выполняемых кем-то, которые занимают много ресурсов в вашей системе. Это покажет вам параметры и аргументы, переданные команде.

0

сделал простой скрипт для поиска PID и использования в скриптах bash ...
используйте с осторожностью!!

Скриншот:
Скриншот

http://pastebin.com/Cm9YH67U

Андре

0

Я считаю, что самый простой способ с помощью следующей команды:

ps -awxs | grep pid

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .