今天接到用戶反饋,說nohup ... & 執行后,終端斷開后任務不在了。
過程后發現:
執行 命令后,退出連接,再次使用jobs查看,沒有后台作業。
分析原因如下:
jobs 是查看當前終端的后台作業。
具體原因分析:
jobs是查看當前后台作業(進程),是獲取本次bash進程下子進程的后台作業。
當本次終端退出后,后台作業變成孤兒進程,孤兒進程有系統父進程接管。
當再次連接終端時,原作業與當前終端,不存在關系父子關系,故看不到進程。
但是原作業,會在系統中一致運行,直到完成或被停止。
這就是為什么終端退出后,jobs看不到的原因了。
測試效果:第一次跑一個進程:
第二次跑一個進程:
每次bash的進程id是不一樣的~~ 第一次27461 第二次27509,所以進程樹是不同的~~~
歡迎批評指正!