本文共 653 字,大约阅读时间需要 2 分钟。
一般情况下,想要通过终端长时间运行任务,需要使用nohup 或者 screen,如果不使用会怎么样呢?来测试一下
场景1:ssh登录机器,通过添加(&),启动任务到后台,通过exit命令退出,任务依然存在
场景2:ssh登录机器,通过添加(&),启动任务到后台,直接关闭ssh终端(GUI 直接叉掉窗口),任务终止
ping baidu.com 2>&1 1>/dev/null &
bash有如下配置项,默认关闭(通过命令:shopt 查看):
当huponexit 为off时,exit时不会向终端所属任务发SIGHUP信号,激活该选项:
可以使用disown, 、对任务屏蔽SIGHUP信号,这样,即使强制关闭终端(或者huponexit开启时exit),任务也不会停止
ping baidu.com 2>&1 1>/dev/null &
此时强制断开终端(kill 终端进程),进程依旧存在
需要注意,disown后面要加job的编号,如果只有一个job,可以不提供,否则用jobs查看编号
http://www.cnblogs.com/ziziwu/p/4125750.html