verifica o processo de execução

1

Eu sou novo babe para o Linux. Então, por favor, pule para ler se você não é paciente com iniciante.

Digamos que me peçam para verificar e encerrar os processos com os quais não estou familiarizado. Então, quando eu ls na pasta bin, vejo o processo múltiplo .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 eu faço ps -ef | grep startmyprocess1 não retorna o processo em execução.

Mas, na verdade, o nome do processo do tomcat em execução é myprocess , portanto, quando eu faço ps -ef | grep myprocess , posso ver o processo em execução. Saber que tenho que perguntar à pessoa responsável.

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

    
por kitokid 16.07.2012 / 04:26

5 respostas

1

Iniciar myprocess de dentro de startmyprocess.sh não nome o processo após o script de shell subjacente, é por isso que seu ps -ef | grep startmyprocess1 não retorna um resultado.

É também por isso que muitos processos, especialmente daemons, escrevem seus arquivos para que você possa facilmente referenciar seu processo. Isso pode ser feito com:

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

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

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

e consulta / lista o processo pelo seu pid:

ps --pid $PID
    
por 18.07.2012 / 14:12
0

experimente este ... (não testado)

ps -aux | grep "yourprocess"

Por exemplo,

ps -aux | grep "httpd"
    
por 18.07.2012 / 14:04
0

Acho que um software como o "top" fez um ótimo trabalho.

Tipo:

top

ou

htop
    
por 08.02.2015 / 02:36
0

Tente a seguinte abordagem

ps -ef | grep startmyprocess1.sh

Busque o PID principal para startmyprocess1.sh e use o comando abaixo para descobrir o processo pai a partir do PID.

ps -ef | grep *PPID*
    
por 10.03.2015 / 18:02
0

Resposta de @invert explicou muito, 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 top ou htop , que apenas imprime o / proc / $ PID / cmdline de cada rotina dentro do script de shell.

Além de usar echo $! após o comando para obter o PID do que você deseja. Eu gostaria de usar o comando pgrep quando eu precisar (ou pkill se você quiser matá-lo).

pgrep, pkill - look up or signal processes based on name and other attributes

O pgrep simplifica seus argumentos via / proc / * / cmdline e PIDs de saída correspondentes O pkill é compatiable com kill, então você pode facilmente pkill qualquer rotina com o cmdline

    
por 12.04.2015 / 17:02