verifique o processo em execução

verifique o processo em execução

Sou solicitado a verificar e encerrar os processos com os quais não estou familiarizado. Então, quando estou lsna pasta bin, vejo vários processos .sh. Mas quero saber qual processo está associado a qual processo do Tomcat.

Existe alguma maneira fácil de descobrir isso?

Exemplo startmyprocess1.sh, mas quando o faço ps -ef | grep startmyprocess1não retorna o processo em execução.

Mas, na verdade, o nome do processo do Tomcat em execução é myprocess, então, quando o faço ps -ef | grep myprocess, posso ver o processo em execução. Para saber isso tenho que perguntar ao responsável.

Então, os nomes são diferentes. Se for assim, preciso perguntar a ele várias vezes. Alguma maneira melhor de descobrir isso?

Responder1

tente este .., (não testado)

ps -aux | grep "yourprocess"

Por exemplo,

ps -aux | grep "httpd"

Responder2

Iniciar myprocess de dentro de startmyprocess.sh faznãonomeie o processo com base no script de shell subjacente, é por isso que você ps -ef | grep startmyprocess1não retorna um resultado.

É também por isso que muitos processos, especialmente daemons, gravam seu pid em um arquivo para que você possa referenciar facilmente seu processo. Isso pode ser feito com:

#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid

ou você pode consultar $!qual contém o último pid:

#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid

e consulte/liste o processo por seu pid:

ps --pid $PID

Responder3

Acho que softwares como o "top" farão um ótimo trabalho.

Tipo:

top

ou

htop

Responder4

A resposta de @invert explicou muito, o shell script apenas executa comandos dentro dele. O que isso significa é que você não obterá o nome do script de shell na saída de topor htop, que apenas imprime o /proc/$PID/cmdline de cada rotina dentro do script de shell.

Além de usar echo $!o comando after para pegar o PID do que você deseja. Eu gostaria de usar pgrepo comando quando precisar (ou pkill se você quiser matá-lo).

pgrep, pkill - procura ou sinaliza processos com base no nome e outros atributos

O pgrep simplesmente grep seus argumentos via /proc/*/cmdline e gera PIDs correspondentes O pkill é compatível com kill, então você pode facilmente matar qualquer rotina com o cmdline

informação relacionada