Echo PID do processo filho para um arquivo ao iniciar - bash

0

Gostaria de saber se existe uma maneira de iniciar um processo filho (não como um processo em segundo plano) e obter seu PID, possivelmente enviando-o para um arquivo.

Estou iniciando um processo em um script básico, ou seja, java, e gostaria de poder gerar o PID desse processo java para um arquivo, para que eu possa usá-lo em outros scripts. O problema é que não estou iniciando o java como um processo em segundo plano, portanto, não posso usar $! . Alguma idéia de como eu produziria o PID do processo java que acabei de começar em um arquivo?

Observe que esse processo Java não será o único processo Java em execução no sistema - se eu conseguir esse trabalho, estarei processando o processo filho para processos Java diferentes em arquivos diferentes.

A única coisa em que pensei é possível iniciar um processo em segundo plano que conhece o PID do script bash atual, antes de iniciar o java. Então, usando esse processo em segundo plano para encontrar o processo filho a partir do script bash. Eu não saberia exatamente como implementar isso.

    
por daboross 21.11.2013 / 00:03

1 resposta

1

A melhor solução é provavelmente obter o próprio aplicativo para fazê-lo. Se isso não for uma opção, tente agrupar o aplicativo em um script de shell:

#!/bin/sh
echo My pid is $$.
exec /the/real/path/to/the/app

A chave é o comando exec , que faz com que o shell (o processo que manipula o script) execute o último programa sem bifurcar , para que ele (o aplicativo) assuma o processo e herde seu PID.

    
por 21.11.2013 / 01:57

Tags