
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 更容易的互動性。