Похоже, что comm обрезает команду до 15 символов. Использование commandвместо этого исправляет это.
Немо
1
[Ubuntu 14.04.4 LTS] $ ps -p 1 -o comm= init $ ps -p 1 -o command= / sbin / init; это означает, что это не около 15 символов, может быть, просто имя двоичного файла и его полный путь.
ОмарОтман
3
На самом деле, commдает бинарной имя и commandвозвращает аргумент 0
Robbie
45
Вы можете найти имя процесса или команду, используемую идентификатором процесса или 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, вы можете использовать
Будьте осторожны: в OP упоминается UNIX. Не все UNIX-ы реализуют Plan 9 как файл, специфичный для процесса. Ваш ответ обычно относится только к Linux.
Slhck
3
Хотя это правда, они отметили вопрос «linux». Любой, кто использует ОС UNIX не на основе Linux, будет достаточно привыкать к тому, чтобы изменять ответы в соответствии со своими потребностями
Эндрю Уайт,
14
Чтобы получить путь к программе, используя определенный pid, вы можете использовать:
Эта команда помогла мне больше, чем мне нужно, у меня есть полная строка процесса, который начался. Учитывая процесс Java, с помощью psкоманды все, что вы увидите, просто java, но остальные переданные параметры будут отображаться полностью с pmap.
Даниэль Андрей Mincă
3
Вы также можете использовать awk в сочетании с PS
ps aux | awk '$2 == PID number for a process { print $0 }'
Это нестабильно, так как он также выбирает процессы, которые включают число где-либо в их команде. Попробуйте ps ax | grep 1и посмотрите, действительно ли он возвращает initпроцесс, например. (В моем случае это возвращает 119 строк - не желательно.)
slhck
1
@slhck Модифицировал ответ ... спасибо за информацию .. ps -p 1 -o comm = - лучший вариант для этого вопроса.
Гангадхар
Нам не нужно два прогона для сохранения заголовков, вместо этого используйте ps aux | awk 'NR==1 || $2==PID'- и не нужно говорить, {print $0}потому что это по умолчанию. Но, как вы прокомментировали, -pвсе равно лучше.
dave_thompson_085
3
Схоже с ответом slhck , но полагаясь на файловые операции, а не на вызовы команд:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, а не / sbin / init. В его ответ включена более длинная версия. Но +1 в любом случае.
ОмарОтман
2
Удивительно, но никто не упомянул опцию -f (полная команда) для ps. Мне нравится использовать его с -e (все) и направлять результаты в grep, чтобы я мог сузить область поиска.
ps -ef | grep <PID>
Это также очень полезно для просмотра полных команд, выполняемых кем-то, которые занимают много ресурсов в вашей системе. Это покажет вам параметры и аргументы, переданные команде.
Не работает на BSD (возможно, включая MacOSX? Я не уверен). Даже там, где -e -fэто возможно, grepможет выдавать много ложных совпадений, например, grep 33pid = 933 или 339, ppid = 33 или 933 или 339, время использования 33 секунд или 33 минуты, или имя программы или аргумент, содержащий 33 - включая grepсаму себя. Все (AFAIK) psесть -p, так что просто ps -fp 33.
dave_thompson_085
0
Я считаю самый простой способ с помощью следующей команды:
ps
илиls -l /proc/$PID/exe
ps -fp PID
покажет полную командуОтветы:
На всех POSIX-совместимых системах и в Linux вы можете использовать
ps
:Здесь процесс выбирается по его PID с
-p
.-o
Параметр определяет формат вывода, чтоcomm
означает имя команды.См. Также:
ps
- Базовые спецификации Open Group Issue 6источник
command
вместо этого исправляет это.$ ps -p 1 -o comm=
init$ ps -p 1 -o command=
/ sbin / init; это означает, что это не около 15 символов, может быть, просто имя двоичного файла и его полный путь.comm
дает бинарной имя иcommand
возвращает аргумент 0Вы можете найти имя процесса или команду, используемую идентификатором процесса или pid из
при выполнении
Здесь pid - это pid, для которого вы хотите найти имя
Например:
Чтобы найти имя процесса, используемого pid 2480, вы можете использовать
источник
Чтобы получить путь к программе, используя определенный pid, вы можете использовать:
В качестве альтернативы вы можете использовать:
источник
ps -a
перечислить все процессы, которые связаны с терминалом, он не требует ввода.ps
версии,procps version 3.2.7
работает нормально.Пример:
источник
readlink /proc/1337/exe
. readlink - печатать разрешенные символические ссылки или канонические имена файлов.Вы можете использовать pmap. Я ищу PID 6649. И обрезаю лишние детали процесса.
источник
ps
команды все, что вы увидите, простоjava
, но остальные переданные параметры будут отображаться полностью сpmap
.Вы также можете использовать awk в сочетании с PS
пример:
для печати HEAD LINE вы можете использовать
источник
ps ax | grep 1
и посмотрите, действительно ли он возвращаетinit
процесс, например. (В моем случае это возвращает 119 строк - не желательно.)ps aux | awk 'NR==1 || $2==PID'
- и не нужно говорить,{print $0}
потому что это по умолчанию. Но, как вы прокомментировали,-p
все равно лучше.Схоже с ответом slhck , но полагаясь на файловые операции, а не на вызовы команд:
источник
cat /proc/1/comm
=> init, а не / sbin / init. В его ответ включена более длинная версия. Но +1 в любом случае.Удивительно, но никто не упомянул опцию -f (полная команда) для ps. Мне нравится использовать его с -e (все) и направлять результаты в grep, чтобы я мог сузить область поиска.
Это также очень полезно для просмотра полных команд, выполняемых кем-то, которые занимают много ресурсов в вашей системе. Это покажет вам параметры и аргументы, переданные команде.
источник
-e -f
это возможно,grep
может выдавать много ложных совпадений, например,grep 33
pid = 933 или 339, ppid = 33 или 933 или 339, время использования 33 секунд или 33 минуты, или имя программы или аргумент, содержащий 33 - включаяgrep
саму себя. Все (AFAIK)ps
есть-p
, так что простоps -fp 33
.Я считаю самый простой способ с помощью следующей команды:
источник
ps -p${pid}
, он может поднять множество ложных срабатываний - включаяgrep
сам по себе.сделал простой скрипт для поиска PID и использования в скриптах bash ...
используйте с осторожностью !!
Снимок экрана: http://pastebin.com/Cm9YH67U
Андре
источник