Determinando um PID de uma tarefa

0

Eu preciso ser capaz de executar ou não executar um script com base no fato de outro processo estar ou não em execução. O processo é um software de processamento de imagem de terceiros chamado DenseCap. Existe uma maneira de wait em uma tarefa que você não conhece o PID, mas apenas o nome de? Quando executo ps -ef , esse é o processo:

usr        4638   4536 93 14:57 pts/8    00:00:05 /home/usr/torch/install/bin/lu

Eu NÃO preciso executar um determinado script quando esse estiver em execução, mas que determinado script precise estar em execução quando o DenseCap não estiver. Eu não sei como recuperar o PID para isso. Basicamente, existe um script que tenho que executa o DenseCap, e outro script que eu tenho que executa um certo processo que realmente não deveria estar rodando enquanto o DenseCap está rodando. Existe um script que executa os dois simultaneamente. Eu estou perdido quanto ao que fazer. Se você precisar ver o código, posso postá-lo.

    
por user3026388 25.10.2017 / 21:00

2 respostas

2

Bem, em todo o comando pgrep seria útil, pois você sabe o nome do comando em questão.

pgrep -l <name_of_command>

listaria o nome e o PID , para que você possa usar isso no seu script.

Veja: man pgrep

    
por George Udosen 25.10.2017 / 21:08
1

Outro que você pode usar é o seguinte comando usando ps com a opção de mostrar pid e cmd . O pid nessa ordem seria a primeira parte da linha.

ps -eo pid,cmd | grep <name> | grep -v grep

A única razão pela qual eu gosto de usar este é caso eu precise encontrar um comando pelo switch que o comando está rodando como um túnel que usa algo como CfND , mas eu posso ter sessões ssh extras rodando.

Exemplo:

terrance@terrance-ubuntu:~$ ps -eo pid,cmd | grep CfND | grep -v grep
14908 ssh -CfND 4242 [email protected]

Espero que isso ajude!

    
por Terrance 25.10.2017 / 21:28