如何将进程发送到后台和前台?


17

如果我这样做ping google.com &,则该过程进入后台,并继续向我显示ping详细信息。我仍然可以将终端与其他命令一起使用,但是ping的输出和其他命令的输出混合在一起(这不是问题),但是我根本无法终止此ping过程。

为此,我想将其放到前台,然后按ctrl + c或其他。我尝试使用fg,但也没有用。那么ping google.com &,在ping命令结束时按回车键后,如何重新显示?


2
看来您实际上要解决的问题是杀死后台工作;无需将其置于前台。用jobs找工作ID jid后台进程,然后就去做kill %jid杀死它。
gardenhead's

Answers:


30

fg是用于前景作业的正确命令,但是如果有多个作业在运行,则应指定作业号。如果仅键入fg,则最后一个后台作业(shell认为当前作业)将被带到前台。

获得当前职位:

$ jobs
[1]+     ping google.com &

通过指定数字来预测作业:

fg %1

该命令可能会被正在运行的进程的输出分解,但是它仍然可以使用,您可以忽略该中断。

然后按ctrl+ c中断并停止该过程

如评论中所述,您还可以按作业编号发送信号,例如 kill %1

为了完整起见,如果&在调用流程时未使用,则可以先将ctrl+ 冻结z然后再键入,将其发送到后台bg


1
完全fg没有争论似乎也行得通,至少在只有一项后台工作时。
Cedric Reichenbach'9

1
@CedricReichenbach编辑!
Zanna

-2

要回答所问的问题,即如何将进程的输出发送到后台和前台?,该tee命令将执行以下操作:

在计算中,tee是使用标准流的命令行解释器(shell)中的命令,该命令读取标准输入并将其写入标准输出和一个或多个文件,从而有效地复制了其输入。 https://zh.wikipedia.org/wiki/Tee_(命令)


5
您在这里误解了什么……
Byte Commander
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.