comm parece truncar o comando para 15 caracteres. Usar o commandcorrige.
Nemo
1
[Ubuntu 14.04.4 LTS] $ ps -p 1 -o comm= init $ ps -p 1 -o command= / sbin / init; o que significa que não tem cerca de 15 caracteres, talvez apenas o nome do binário x seu caminho completo.
OmarOthman
3
Na verdade, commdá do binário nome e commandretorna argumento 0
Robbie
45
Você pode encontrar o nome do processo ou o comando usado pelo ID do processo ou pid em
/proc/pid/cmdline
fazendo
cat /proc/pid/cmdline
Aqui pid é o pid para o qual você deseja encontrar o nome
Por exemplo:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Para encontrar o nome do processo usado pelo pid 2480, você pode usar
Cuidado: o OP menciona o UNIX. Nem todos os UNIXs implementam o Plano 9 como um arquivo específico do processo. Sua resposta geralmente se aplica apenas ao Linux.
slhck
3
Embora isso seja verdade, eles marcaram a pergunta "linux". Qualquer pessoa que está usando um sistema operacional UNIX com base não-Linux será bastante acostumado a ter de modificar respostas para atender suas necessidades
Andrew White
14
Para obter o caminho do programa usando um certo pid, você pode usar:
Esse comando me ajudou mais do que eu precisava, tenho a linha completa do processo iniciado. Dado um processo Java, com o pscomando tudo o que você verá é justo java, mas o restante dos parâmetros passados será exibido totalmente pmap.
Daniel Andrei Mincă 31/08/18
3
Você também pode usar o awk em combinação com o ps
ps aux | awk '$2 == PID number for a process { print $0 }'
Isso é instável, pois também seleciona processos que incluem o número em qualquer lugar em seu comando. Tente ps ax | grep 1e veja se realmente retorna o initprocesso, por exemplo. (No meu caso, ele retorna 119 linhas-não é desejável.)
slhck
1
@slhck Modificou a resposta ... obrigado pela informação .. ps -p 1 -o comm = é a melhor opção para esta pergunta.
Gangadhar
Não precisamos de duas execuções para manter os cabeçalhos; em vez disso, use ps aux | awk 'NR==1 || $2==PID'- e não precisamos dizer {print $0}porque é o padrão. Mas como você comentou, -pé melhor de qualquer maneira.
Dave_thompson_085
3
Semelhante à resposta do slhck , mas contando com operações de arquivo em vez de invocações de comando:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, não / sbin / init. Sua resposta inclui a versão mais longa. Mas +1 de qualquer maneira.
OmarOthman
2
Surpreendentemente, ninguém mencionou a opção -f (comando completo) para o ps. Eu gosto de usá-lo com -e (tudo) e canalizar os resultados para grep, para que eu possa restringir minha pesquisa.
ps -ef | grep <PID>
Isso também é muito útil para analisar os comandos completos que alguém está executando e que consome muitos recursos em seu sistema. Isso mostrará as opções e argumentos passados para o comando.
Não funciona no BSD (talvez incluindo o MacOSX? Não tenho certeza). Mesmo quando -e -fdisponível, greppode produzir muitas correspondências falsas, por exemplo, grep 33inclui pid = 933 ou 339, ppid = 33 ou 933 ou 339, tempo usado de 33 segundos ou 33 minutos, ou nome do programa ou argumento contendo 33 - incluindo o greppróprio. Todos (AFAIK) pstêm -p, então apenas ps -fp 33.
Dave_thompson_085
0
Eu acho o método mais fácil de estar com o seguinte comando:
ps
ouls -l /proc/$PID/exe
ps -fp PID
mostrará o comando completoRespostas:
Em todos os sistemas compatíveis com POSIX e com Linux, você pode usar
ps
:Aqui, o processo é selecionado pelo seu PID com
-p
. A-o
opção especifica o formato de saída,comm
significando o nome do comando.Veja também:
ps
- O Open Group Base Specifications Issue 6fonte
command
corrige.$ ps -p 1 -o comm=
init$ ps -p 1 -o command=
/ sbin / init; o que significa que não tem cerca de 15 caracteres, talvez apenas o nome do binário x seu caminho completo.comm
dá do binário nome ecommand
retorna argumento 0Você pode encontrar o nome do processo ou o comando usado pelo ID do processo ou pid em
fazendo
Aqui pid é o pid para o qual você deseja encontrar o nome
Por exemplo:
Para encontrar o nome do processo usado pelo pid 2480, você pode usar
fonte
Para obter o caminho do programa usando um certo pid, você pode usar:
Como alternativa, você pode usar:
fonte
ps -a
listar todos os processos associados ao terminal, ele não recebe nenhuma entrada.ps
versão,procps version 3.2.7
funciona bem.Exemplo:
fonte
readlink /proc/1337/exe
. readlink - imprima links simbólicos resolvidos ou nomes de arquivos canônicos.Você pode usar o pmap. Estou procurando pelo PID 6649. E cortando os detalhes extras do processo.
fonte
ps
comando tudo o que você verá é justojava
, mas o restante dos parâmetros passados será exibido totalmentepmap
.Você também pode usar o awk em combinação com o ps
exemplo:
para imprimir HEAD LINE você pode usar
fonte
ps ax | grep 1
e veja se realmente retorna oinit
processo, por exemplo. (No meu caso, ele retorna 119 linhas-não é desejável.)ps aux | awk 'NR==1 || $2==PID'
- e não precisamos dizer{print $0}
porque é o padrão. Mas como você comentou,-p
é melhor de qualquer maneira.Semelhante à resposta do slhck , mas contando com operações de arquivo em vez de invocações de comando:
fonte
cat /proc/1/comm
=> init, não / sbin / init. Sua resposta inclui a versão mais longa. Mas +1 de qualquer maneira.Surpreendentemente, ninguém mencionou a opção -f (comando completo) para o ps. Eu gosto de usá-lo com -e (tudo) e canalizar os resultados para grep, para que eu possa restringir minha pesquisa.
Isso também é muito útil para analisar os comandos completos que alguém está executando e que consome muitos recursos em seu sistema. Isso mostrará as opções e argumentos passados para o comando.
fonte
-e -f
disponível,grep
pode produzir muitas correspondências falsas, por exemplo,grep 33
inclui pid = 933 ou 339, ppid = 33 ou 933 ou 339, tempo usado de 33 segundos ou 33 minutos, ou nome do programa ou argumento contendo 33 - incluindo ogrep
próprio. Todos (AFAIK)ps
têm-p
, então apenasps -fp 33
.Eu acho o método mais fácil de estar com o seguinte comando:
fonte
ps -p${pid}
, isso captará muitos falsos positivos - incluindo ogrep
próprio.fez um script simples para encontrar PID e usar em scripts bash ...
use com cuidado !!
Captura de tela: http://pastebin.com/Cm9YH67U
André
fonte