今天接到用户反馈,说nohup ... & 执行后,终端断开后任务不在了。
过程后发现:
执行 命令后,退出连接,再次使用jobs查看,没有后台作业。
分析原因如下:
jobs 是查看当前终端的后台作业。
具体原因分析:
jobs是查看当前后台作业(进程),是获取本次bash进程下子进程的后台作业。
当本次终端退出后,后台作业变成孤儿进程,孤儿进程有系统父进程接管。
当再次连接终端时,原作业与当前终端,不存在关系父子关系,故看不到进程。
但是原作业,会在系统中一致运行,直到完成或被停止。
这就是为什么终端退出后,jobs看不到的原因了。
测试效果:第一次跑一个进程:
第二次跑一个进程:
每次bash的进程id是不一样的~~ 第一次27461 第二次27509,所以进程树是不同的~~~
欢迎批评指正!