Uma opção é que o processo que inicia o Programa B pode recuperar o PID depois de fazer isso e salvá-lo em um arquivo em algum lugar (por exemplo, /var/run/
geralmente contém esses arquivos X.pid
). Uma maneira de fazer isso é lançar o Programa B de um script em segundo plano e, em seguida, inspecionar a variável do shell $!
, da seguinte forma:
ProgramB &
B_PID=$!
Geralmente, com essa estratégia, o arquivo X.pid
pode ficar obsoleto, ou seja, o processo iniciado pode morrer sem o arquivo X.pid
ser removido e esse PID pode até ser reciclado para algum outro processo. Se o Programa B não tiver sido lançado nesse meio tempo, o arquivo X.pid
não terá sido atualizado, então você deve verificar se existe um processo com o PID armazenado no arquivo X.pid
, e também que esse processo tem o nome do comando que você está esperando.
Outra estratégia é inspecionar os argumentos com os quais o Programa B é relatado como tendo sido iniciado. Você pode obter ps
ou pgrep
para fornecer essa informação. Como um comentador diz, o sinalizador a ser usado para pgrep
é -f
.