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 .