如何將作業傳送到背景而不停止它們?

如何將作業傳送到背景而不停止它們?

Ctrl+z 將目前作業傳送到後台,但停止它。

以及如何恢復停止的工作?

答案1

你可以運行“bg”在後台運行它。

「fg」將其移至前台

請注意,bg 和 fg 採用作業編號而不是 PID,因此如果您同時執行多個作業,請使用「jobs」指令取得作業編號。

答案2

您也可以在命令列上使用“&”來啟動程式作為背景作業。

例如

我的程式&

請注意,輸出(stdout 和 stderr)仍會轉到當前 tty,因此重定向到 /dev/null 或日誌檔案通常是個好主意,如下所示:

myprogram > ~/program.log 2>&1 &

在這兩個範例中,它與其他任何範例一樣都是後台作業,因此您仍然可以使用「fg」將其帶回前台(但如果您已重定向輸出,則不會看到太多)。

答案3

在 bash 中,輸入「bg」會將作業置於後台,直到它阻止需要輸入。它將繼續輸出到 STDERR 和 STDOUT,這可能沒有幫助。您可以輸入「fg」將作業返回到前台。

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

因此,這就是啟動一個長複製作業並暫停它,啟動第二個長複製作業並暫停它,然後將第一個複製作業放入後台並讓它運行,然後退出第一個複製作業。然後我將最後一個複製作業放入前台並讓它完成。

答案4

另一個選擇是優秀的螢幕實用程序,可用於同時運行多個進程,而無需保持終端開啟。它還允許比 bg 和 fg 更容易的互動性。

相關內容