Ctrl+z 将当前作业发送到后台,但停止它。
以及如何恢复已停止的工作?
答案1
您可以运行“bg”使其在后台运行。
“fg”将其移至前台
请注意,bg 和 fg 采用作业编号而不是 PID,因此如果您同时运行多个作业,请使用“jobs”命令来获取作业编号。
答案2
您还可以使用命令行上的“&”将程序作为后台作业启动。
例如
我的程序 &
请注意,输出(stdout 和 stderr)仍将转到当前 tty,因此重定向到 /dev/null 或日志文件通常是一个好主意,如下所示:
我的程序 > ~/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 更容易的交互。