題 如何在Linux中恢復已停止的作業?


如何在Linux中恢復已停止的作業?我正在使用emacs而不小心點擊了ctrl-z,這讓我回到了控制台。當我輸入“工作”時我能看到它

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

299
2018-04-08 09:38


起源


對於Vim來說,這實際上是一個相當正常的工作流程,如果你想在你的bash歷史記錄中保留命令,那麼你就會命中 Ctrl-z 鍵入您的命令,然後繼續。顯然你可以在不離開Vim的情況下運行命令 :! ed命令 - icc97


答案:


命令 fg 是你想要使用的。如果有多個已停止的作業,您也可以為其指定作業號。


337
2018-04-08 09:39



作為參考,fg是“前景”。您也可以使用“bg”在後台繼續工作。 - Sirex


Linux中的常規作業控制命令是:

  • 工作  - 列出當前的工作
  • FG  - 恢復隊列中下一個的作業
  • fg%[編號]  - 恢復工作[編號]
  • BG  - 將隊列中的下一個作業推入後台
  • bg%[編號]  - 將作業[編號]推入後台
  • 殺死%[編號]  - 殺掉編號為[編號]的工作
  • 殺 - [信號]%[數字]  - 將信號[信號]發送到作業號[編號]
  • disown%[number]  - 取消進程(不再有終端將是所有者),因此即使在關閉終端后命令也將處於活動狀態。

這幾乎都是他們所有人。請注意命令中作業編號的%infront - 這就是告訴kill你正在談論的是工作而不是流程。


232
2018-04-08 11:55



我避免“殺死%1”,因為將其拼寫為“殺死1”真的很糟糕:) - barrycarter
@barrycarter這是非常真實的。我經常這樣做 fg 和a Ctrl-C ;) - Majenko
@barry:這就是為什麼在Upstart中init默認忽略SIG {TERM,KILL}的原因。 - Hello71
而且,當然,“永遠不要以root身份運行”;) - barrycarter


你也可以輸入 %<process_name>;即,你在emacs中按Ctrl-Z,然後你可以輸入 %emacs 在控制台中將其帶回前台。


44
2017-08-26 21:04



很高興知道 - ZAD-Man


只是為了添加其他答案, 慶典 讓你跳過 fg 如果您指定了一個工作號碼。

例如,這些是等效的並恢復最新的工作:

%
%%
fg
fg %

這些恢復工作#4:

%4
fg 4

29
2018-04-08 14:03



雖然這很酷,但我仍然覺得打字更容易 fg 比 %。 - rr-
% 太棒了,謝謝!作為一個觸摸打字員,我發現 fg 非常惱人(同一個手指)。但是,那樣的話也是如此 cd。 - Gauthier
你可以在後台啟動它 bg % 要不就 % &。 - Wildcard


如果您沒有從當前終端啟動它,請使用 ps aux | grep <process name> 找到進程號(pid),然後恢復它:

kill -SIGCONT <pid>

14
2018-02-04 19:49



如果您拒絕已停止的進程,這也有效 - mabraham
當你說時,你是否可以訪問其輸入/輸出? fg ? - Ciprian Tomoiagă