我有一个最初在前台运行的进程。我通过Ctrl+暂停Z,然后通过 恢复其在后台运行bg <jobid>
。
我想知道如何挂起在后台运行的进程?
如何将后台进程带到前台?
编辑:
进程输出到stderr,那么我应该如何fg <jobid>
在进程输出到终端时发出命令?
有时,在我用bg
bash后台处理一个进程后的一段时间,当我在同一个 shell 中按 Enter 以重新显示提示(只是为了检查当显示后台进程的某些输出时我仍然在 bash 中),后台进程似乎自发停止。
如果我bg
再次这样做,同样的问题会再次出现。
修复它的唯一方法似乎是fg
.
为什么会发生这种情况?
$ pdfgrep -R -i spark . | less &
$ pdfgrep -R -i spark . &
$ jobs
[3]- Stopped pdfgrep -R -i spark . | less
[4] Running pdfgrep -R -i spark . &
Run Code Online (Sandbox Code Playgroud)
为什么有一个| less
会停止,而另一个没有运行?
停止的后台作业不会从标准输入读取。所以这不能成为原因。
我将作业作为后台的原因是我可以在同一个终端会话中做其他事情。
我使用管道的原因less
是因为我不希望输出到 stdout 在我做其他事情时弄乱我的终端会话的屏幕。
有没有办法实现上述两个目标?我更喜欢不将输出保存到文件而不是将输出保存到文件,因为记住文件、读取和删除它们需要更多时间。
谢谢。
ctrl-z 或 fg 没有手动输入。
“fg”在作业控制的上下文中代表什么?换句话说,输入 ctrl-z 将挂起当前作业,让我回到 shell,命令“fg”重新激活挂起的作业。“fg”代表什么?