Como daemonizar um script bash apenas se o --daemon flag for fornecido?

2

Eu tenho meu script.sh e quero executá-lo com ./script.sh ou ./script.sh --daemon , mantendo-o em primeiro plano, a menos que o sinalizador --daemon seja fornecido. Nesse caso, ele deve ser desanexado e entrar no plano de fundo apropriadamente . Eu quero que o script pareça

[function definitions]

process_args

if [ "$BECOME_DAEMON" == "1" ]; then
    become_daemon
fi

while true; do
    read line <controller_fifo
    do_command $line
done

É possível obter o comportamento que eu quero? Em caso afirmativo, o que preciso preencher para se tornar_daemon? Se não, qual seria a melhor alternativa?

    
por nullUser 01.04.2015 / 04:04

1 resposta

2

Eu encontrei o seguinte para trabalhar:

[function definitions]

process_args

function command_loop {
    trap handle_term SIGTERM

    while true; do
        read line <controller_fifo && do_command $line &
        wait
    done
}

if [ "$BECOME_DAEMON" == "1" ]; then
    command_loop &> /dev/null &
    disown
else
    command_loop 
fi

Note que este método manipula o sinal SIGTERM normalmente em ambos os casos (daemon ou no daemon), enquanto o loop de leitura original que eu publiquei não trataria um sinal (o manipulador de sinal não seria chamado até depois de outra linha de leitura). / p>     

por 07.04.2015 / 01:12