Bash

當我執行./command.sh &時,後台任務被掛起。我怎樣才能讓它繼續執行?

  • May 13, 2020

這就是我正在執行的:

alexandma@ALEXANDMA-1-MBP ./command.sh &
[2] 30374
alexandma@ALEXANDMA-1-MBP
[2]  + suspended (tty output)  ./command.sh

我不希望它開始暫停,我希望它繼續在後台執行。我將在一個循環中執行一堆這些,所以我需要一些能以這種方式工作的東西。

我怎樣才能讓它繼續執行?

由於給出的原因,它停止了:它試圖輸出到 tty。./command.sh如果支持,您可以嘗試重定向輸出,或者在它自己的視窗tmux或視窗中執行命令。screen例如

tmux new-window -n "window name" ./command.sh

然後查看使用創建tmux list-windows並附加到tmux的視窗列表tmux attach

這樣程序仍然會等待輸入/輸出發生,但是一旦您轉到相應的視窗,您就可以輕鬆地提供輸入,並且輸出將被擷取而無需任何活動。

在 Anthon 的解釋中添加一個細節:

寫入後台程序並不總是停止。這取決於終端設置tostop

stty tostop
stty -tostop

可用於切換此設置。因此,如果您希望後台程序寫入“另一個程序的”終端,那麼您可以保持它執行但不需要tmuxscreen或類似的。

引用自:https://unix.stackexchange.com/questions/166477