Lança o processo de background a partir de sh e fecha o terminal

4

Como isso pode ser alcançado em sh (não bash!)?

nohup sh -c 'helper-bcpy.sh "$0" "$1" "$2" "$3"' "$num" "$full_path" "$log" "$log_finished" >/dev/null &

Eu teria esperado que ele enviasse o processo em segundo plano (o que ele faz) e o desconecte do terminal (o que ele não faz - se eu fechar o terminal de onde eu iniciei o script, helper-bcpy.sh won ' • executar completamente, embora pareça que a chamada wget demorada seja executada corretamente ...).

Eu sei que eu poderia usar disown , mas eu preciso fazer isso em sh não bash ...

#!/bin/sh

# $num $full_path $log $log_finished - computed before from parameters received by the script

nvram set led_disable=1
service restart_leds >/dev/null

nohup sh -c 'helper-bcpy.sh "$0" "$1" "$2" "$3"' "$num" "$full_path" "$log" "$log_finished" >/dev/null &

echo "copy process launched..."
exit 0

helper-bcpy.sh é assim:

#!/bin/sh

wget -m -np -nH -nv --cut-dirs="$1" "$2" 1>/dev/null 2>"$3"
nvram set led_disable=0
service restart_leds
mv "$3" "$4"

exit 0

Eu preciso fazer isso funcionar em um roteador Asus que usa o firmware Merlin

    
por popliviustefan 23.02.2017 / 19:43

1 resposta

0

#!/bin/sh
your_program &
disown %1

Funciona em dash , que é o mais próximo do shell POSIX que eu conheço.

    
por 12.08.2017 / 15:38