如何在Linux中恢复已停止的作业?我在使用emacs时不小心按了ctrl-z,这使我重回控制台。在输入“职位”时可以看到它

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


评论

对于Vim来说,这实际上是相当正常的工作流程,如果要将命令保留在bash历史记录中,请按Ctrl-z键入命令,然后继续。显然,您可以通过:!运行命令而无需离开Vim。 ed命令

#1 楼

您要使用命令fg。如果有多个停止的作业,也可以给它一个作业号。

评论


供参考,fg是“前景”。您也可以使用“ bg”在后台继续作业。

– Sirex
11年4月8日在11:05

#2 楼

Linux中的常规作业控制命令为:



jobs-列出当前作业

fg-恢复队列中的下一个作业

fg%[number]-恢复作业[number]

bg-将队列中的下一个作业推入后台

bg%[number] ]-将作业[number]推送到后台

杀死%[number]-杀死编号为[number]的作业

kill-[signal]%[number]-将信号[信号]发送到作业编号[number]

disown%[number]-取消进程(不再是所有者的终端),因此即使关闭终端,命令仍然有效。 br />
就差不多了。请注意命令中作业编号的%infront-这是杀死您正在谈论作业而不是进程的信息。

评论


我避免使用“ kill%1”,因为将其误认为是“ kill 1”真的很糟糕:)

–user59328
2011年4月8日在14:05

@barrycarter这是真的。我通常会执行fg和Ctrl-C;)

–马延科
2011年4月8日在14:08

@barry:这就是为什么Upstart中的init默认忽略SIG {TERM,KILL}的原因。

– Hello71
2011年4月19日在2:26

而且,当然,“永远不要以root身份运行”;)

–user59328
2011年4月19日在3:04

为什么要使用“%”字符。是否需要在作业号之前添加前缀,还是指定int类型的Unix约定?

– Talespin_Kit
2月28日5:03

#3 楼

您也可以输入%<process_name>;即您在emacs中按Ctrl-Z,然后可以在控制台中键入%emacs并将其放回前台。

评论


很高兴知道

– ZAD-Man
15-10-22在21:42

#4 楼

只是为了增加其他答案,如果指定工作编号,bash允许您跳过fg。例如,它们等效并恢复最新工作:

%
%%
fg
fg %


这些恢复工作#4:

%4
fg 4


评论


虽然这很酷,但我仍然发现键入fg比%容易。

– rr-
2014年10月10日17:10

%很棒,谢谢!作为触摸打字员,我发现fg非常恼人(同一根手指)。但是,cd也是如此。

–Gauthier
15年4月15日在13:45

您可以使用bg%或仅%&在后台启动它。

–通配符
16年8月16日在18:43

以我为例,当我尝试使用fg时,我看到停止的进程出现并迅速消失,仅成功恢复了它。

– Lefi Tarik
19年6月25日在12:54

#5 楼

如果您不是从当前终端启动它,请使用ps aux | grep <process name>查找进程号(pid),然后使用以下命令恢复它:只是向进程发送信号,允许进程相互通信的工具。“终止信号”只是许多标准信号中的一个。)

奖金提示:包装第一个字符带有kill的进程名称,以防止[]命令本身出现在结果中。例如要找到grep进程,请使用emacs

评论


如果您放弃已停止的进程,这也将起作用

–马布拉汉姆
17年12月6日在1:21

当您说fg时,您还能访问它的输入/输出吗?

–西门人Tomoiagă
18-10-2在9:39

这比处理工作编号要灵活得多。竖起大拇指。

–thomp45793
19年2月14日在22:55