![是否可以将进程与其终端分离?(或者,“我应该使用屏幕!”)](https://linux22.com/image/487043/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%E8%BF%9B%E7%A8%8B%E4%B8%8E%E5%85%B6%E7%BB%88%E7%AB%AF%E5%88%86%E7%A6%BB%EF%BC%9F%EF%BC%88%E6%88%96%E8%80%85%EF%BC%8C%E2%80%9C%E6%88%91%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E5%B1%8F%E5%B9%95%EF%BC%81%E2%80%9D%EF%BC%89.png)
在 Unix(具体来说,Linux)上,我在常规 ssh->bash 会话中启动了一项工作。我想尽快下班,但现在我意识到这项工作将花费几个小时。
如果我刚开始在 Screen 工作,我就可以离开并回家。但我没有。
有什么方法可以断开作业与其 ssh 会话的连接,这样我就可以关闭计算机(断开 TCP 连接并终止 ssh 会话),但程序仍继续运行?
我并不关心它的输出——事实上,我将 stdout 重定向到了一个文件。我只希望它能够运行完成。
答案1
您可以按ctrl-z
中断该进程,然后运行bg
以使其在后台运行。
您可以使用 来显示以此方式后台运行的所有进程的编号列表jobs
。
然后您可以运行disown %1
(替换1
为输出的进程号jobs
)来从终端分离该进程。
无论名称如何,运行后该进程仍然归您所有disown
,它只是与您启动它的终端分离。
答案2
我相信你正在寻找的命令是“disown”
答案3
使用
nohup command &
是美丽的:
root@index:~# nohup /usr/bin/curl localhost/begemot.php &
[1] 894
root@index:~# nohup: ignoring input and appending output to `nohup.out'
并退出此终端,任务将继续进行......
答案4
使用时雷普特在屏幕内,您可以将流程(或其输出)移动到屏幕中。