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.
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.
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.
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
.