Script shell - filho - processo em segundo plano

0

Eu tenho a seguinte situação:

Como root, o Script_A.sh é executado no servidor e dorme até ser acionado. Quando acionado, ele chama Script_B.sh , que faz um loop no servidor para determinar quais ações ele precisa executar. Depois de gerar sua lista de ações, ele enviará Script_C.sh como o proprietário do processo ( su - $sUser -c "/path/to/correct/script.sh" ).

Meu problema: existe uma maneira de executar o su - $sUser -c "/path/to/correct/script.sh" em segundo plano? Eu não quero executar o terceiro script sequencialmente.

    
por Hunkerjr 31.03.2016 / 13:37

2 respostas

0

Funciona bem para colocar apenas & no final, como de costume:

su - "$sUser" -c "/path/to/script.sh" &

Se isso não funcionar, você precisará editar sua pergunta para incluir mais detalhes sobre seu problema.

    
por 31.03.2016 / 13:56
0

Anexar um & ao comando é a maneira de executar um comando em segundo plano. Então:

su - $sUser -c "/path/to/correct/script.sh" &

Ou se você quiser ter certeza de que o script não receberá um SIGHUP (sinal de desligamento) do script B use disown

su - $sUser -c "/path/to/correct/script.sh" & disown

Não tenho 100% de certeza de que isso terá o efeito exato de que você precisa, pois pode haver efeitos colaterais do uso de su . O comando nohup também é útil para esse tipo de empreendimento, pois ele interrompe qualquer saída para o terminal, mas depende de suas circunstâncias particulares.

Esta resposta esclarece mais sobre o uso de & , disown e nohup .

    
por 31.03.2016 / 13:58