簡體   English   中英

如果在后台運行,則無法從腳本調用子shell

[英]Invoking subshells from script does not work if run in background

我有一個在后台運行的腳本,例如:

su - insite1 -c "invokeTest.sh" &

現在,此腳本invokeTest.sh具有以下內容:

while [ 1 ]
do
  echo "Hello World from invokeTest" >> /tmp/invokeTest
  ( exec "/tmp/test.sh" )
done

盡管它打印“ Hello World from invokeTest”,但它不會調用test.sh。

我的問題:有什么方法可以直接從su - insite1 -c" "在無限while循環中直接調用test.sh,這樣我們就可以完全跳過invokeTest.sh本身(但test.sh需要在后台運行)?

如果否,如何確保從invokeTest.sh調用test.sh?

要回答有關不使用腳本來運行命令的問題,可以將任何shell命令放入-c參數中,包括while循環。 所以你可以這樣寫:

su - insite1 -c 'while :; do echo "Hello World" >> /tmp/invokeTest; /tmp/test.sh; done' &

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM