我知道有两种或两种以上的方法可以运行一项作业并将其置于后台。
现在我使用 ctrl-z 将 scp 传输置于后台,因为我注意到它需要一段时间。我如何在后台运行该过程,以便在等待它完成时可以编写其他命令?
注意:我可以创建一个新的终端,但是在这种情况下,我通过 SSH 连接到 2 个不同的服务器,因此对于我在后台想要执行的每个并发作业都执行此操作很不方便。
答案1
在使用 ^Z 停止某项操作后,键入“bg”可让其在后台运行。只要您尚未注销,“fg”将使其回到前台。
答案2
需要注意的是,虽然有些进程使用 CTRL+Z 表示后台运行,但默认行为是 STOP,不会继续执行。最安全的方式是在命令末尾添加 &,然后运行“disown”强制其完全进入后台。但是,您将无法再次将其置于前台。
如果您想要一种轻松的方式来关注后台任务,请考虑学习screen
。作为基础课程,请输入screen scp myfile server:/mydest
,然后输入 CTRL+AD 以“分离”屏幕会话。您可以通过输入“screen -r”来调用此会话,即使在注销机器后也是如此!:)
screen
具有更多高级功能,例如多个窗口、活动任务栏等。以下是指南:关联
答案3
对于后台命令,只需在命令后添加 &。
答案4
我建议在屏幕上运行 scp 之类的程序。原因是,通过将命令放在后台,它会将输出转储到您当前的终端中,并且您无法在工作过程中轻松断开 ssh 会话并重新连接到它。
运行 screen。您将看到新的终端。运行您的进程。现在按“ctrl-a d”,您应该会看到一行内容
[Screen detached]
您可以通过运行以下命令重新连接到屏幕:
# screen -r
您应该可以取回您的原始终端。