obtém o id do processo do caminho

1

Estou tentando criar um bom script bash de serviço para um serviço personalizado que construí, meu problema é que preciso identificar se o processo está sendo executado armado com o caminho para o arquivo apenas.

De todo o meu googling eu encontrei a resposta sobre como encontrar o caminho de um PID, mas eu preciso exatamente do oposto.

Digamos que meu executável esteja localizado em /home/monitor/script.py

Ele é executado assim: python /home/monitor/script.py

Armado com isso, como eu seria capaz de encontrar o ID do processo se ele estivesse em execução?

    
por transilvlad 11.02.2013 / 11:41

3 respostas

1

Tente usar o ps para procurar o script pelo nome:

ps -f -C python | grep /home/monitor/script.py

O sinalizador -C diz ao ps para listar os processos chamados "python", o -f fornece a saída "completa", incluindo a linha de comando, e o grep seleciona o processo python correto. O pid é o segundo campo na linha.

    
por 11.02.2013 / 13:51
0

(Supondo que o Linux, você pode ser capaz de analisar algo de /proc - mas, não)

Se o seu script precisar saber se ele já está em execução, ele deve gravar um PID em algum lugar quando for executado. Então, seu script pode procurar naquele lugar quando começar a ver se ele já está sendo executado ou não.

Isso obviamente pressupõe que você não queira executar mais de uma instância de uma só vez; se tiver, tenha um arquivo caminho-para-PID configurável que você passe na linha de comando, ou algo similar.

    
por 11.02.2013 / 11:57
0

Um comando bash para descobrir processos python (2.7):

$ lsof | awk '$9 ~ /^\/usr\/lib\/python2\.7/ {print $0}'

Você pode modificar o comando acima da saída obtida. Estou obtendo resultados variados aqui.

    
por 11.02.2013 / 14:10

Tags