从 sh 启动后台进程并关闭终端

从 sh 启动后台进程并关闭终端

如何在 sh(不是 bash!)中实现这一点?

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

我本希望它在后台发送进程(它会这样做)并将其与终端分离(它不会这样做 - 如果我从启动脚本的地方关闭终端,helper-bcpy.sh则不会完全执行,尽管看起来耗时的 wget 调用得到正确执行...)。

我知道我可以使用disown,但我需要在 sh 而不是 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看起来像这样:

#!/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

我需要在使用 Merlin 固件的华硕路由器上完成这项工作

相关内容