2013-08-17 07:12:47 +0000 2013-08-17 07:12:47 +0000
280
280

Если я знаю PID номер процесса, как я могу получить его имя?

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

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

Ответы (10)

308
308
308
2013-08-17 08:21:51 +0000

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

ps -p 1337 -o comm=

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

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

53
53
53
2013-08-17 08:04:46 +0000

Вы можете найти имя процесса или команду, используемую 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
15
15
15
2015-04-18 02:16:04 +0000

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

ps ax|egrep "^ [PID]"

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

ps -a [PID]

8
8
8
2017-05-27 04:28:29 +0000

Ты можешь воспользоваться картой. Я ищу PID 6649. И отсекаю дополнительные технологические детали.

$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
8
8
8
2016-05-06 00:14:20 +0000
# 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
3
3
3
2015-08-30 23:31:50 +0000

Аналогично slhck’s Answer , но полагается на файловые операции вместо вызовов команд:

MYPID=1
cat "/proc/$MYPID/comm"
```.
3
3
3
2013-08-17 09:32:59 +0000

Вы также можете использовать 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
2
2
2
2016-02-23 21:47:17 +0000

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

ps -ef | grep <PID>

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

0
0
0
2016-11-21 09:48:46 +0000

Я нахожу самым простым методом команду:

ps -awxs | grep pid
0
0
0
2016-12-26 15:08:43 +0000

сделал простой скрипт, чтобы найти PID и использовать внутри bash скриптов… использовать с осторожностью!

Скриншот:

http://pastebin.com/Cm9YH67U

Андрэ

Похожие вопросы

6
10
10
11
2