转载请注明文章出处:https://ssrvps.org/archives/3391
让任务脱离终端运行,是非常容易做到的,常用的方法有两种:tmux
/screen
,或者nohup
。如果一个正在的运行的任务,因为网络或者时间关系,需要退出当前会话,如何让其在后台继续运行呢?答案是使用disown
命令,本文介绍其用法。
将正在运行的任务脱离终端运行
使用disown
将正在运行的任务脱离终端运行的操作如下:
- 按
ctrl + z
暂停任务; - 执行
bg
让其转入后台继续运行; - 输入
disown -h %jobid
让其脱离终端运行,其中jobid是用jobs
命令查看的后台任务编号。如果有多个任务,可以使用disown -a
命令.
disown
是bash
内置命令,作用是删除当前shell的任务。如果你的shell不是bash
,可能没有disown
,则可以尝试kill
命令组合达到相同效果:
- 新打开一个会话,暂停任务:
kill -s SIGTSTP pid
; - 在新会话中将任务放入后台运行:
kill -s SIGCONT pid
; - 此时两个会话均可安全的关闭,任务将继续在后台执行。