[英]Unable to execute a bash script in background from another bash script
我有一個要從另一個Shell腳本在后台調用的Shell腳本。 這兩個腳本都是bash腳本。
第一個腳本(a.sh)類似於:
read a
echo 'something'
read b
echo 'something else'
# some if else conditions
nohup bash b.sh 2>&1 > /tmp/log &
當我嘗試執行上述腳本時: ./a.sh arg1 arg2 | tee log
./a.sh arg1 arg2 | tee log
,很奇怪,它卡在nohup行中以使第二個腳本b.sh
完成,而應該沒有。
但是,當我在腳本中僅包含以下行時,它將按預期工作:
nohup bash b.sh 2>&1 > /tmp/log &
請幫忙。 如果需要,我也可以共享確切的腳本。
這是您想發生的事情:
tee
出口 這是正在發生的事情:
tee
永遠不會退出。 通過將stderr指向日志文件而不是管道來修復它,以便后台進程不再保持管道打開。
2>&1
和重定向的順序的含義已在其他答案中進行了解釋 ,並且shellcheck會在您的代碼中自動指出此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.