#!/bin/sh
your_program &
disown %1
Funciona em dash
, que é o mais próximo do shell POSIX que eu conheço.
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
#!/bin/sh
your_program &
disown %1
Funciona em dash
, que é o mais próximo do shell POSIX que eu conheço.