Linux:進程間關係與守護進程

進程間關係

除了我們所知道的父子關係,兄弟關係等,進程之間還有兩個很重要的關係,即進程組關係和會話關係。

  • 進程組作業和會話
    例如:
[Daisy@localhost Linux3]$ sleep 1000 | sleep 20000 | sleep 3000 &
[1] 3042

我們進行了3個進程,&表示放在後臺運行,運行的結果是[1] 3042其中1表示作業號,3042是最後一個進程的id,例如:
在這裏插入圖片描述
可以看出這三個進程共用一個PPID2831,PGID表示所屬組的id,SID是會話id
然後我們多進行幾次這三個進程的運行,可以得到:
在這裏插入圖片描述
可以看出是一組一組的,說明進程組是與作業(多個進程協同做一件事稱爲作業)相聯繫的
使用jobs命令可以查看當前有幾個作業在運行:

[Daisy@localhost Linux3]$ jobs
[1]   運行中               sleep 1000 | sleep 20000 | sleep 3000 &
[2]   運行中               sleep 1000 | sleep 20000 | sleep 3000 &
[3]-  運行中               sleep 1000 | sleep 20000 | sleep 3000 &
[4]+  運行中               sleep 1000 | sleep 20000 | sleep 3000 &

如果此時想要將某個作業放到前臺來運行,使用fg(front ground)命令:
在這裏插入圖片描述
此時將2號作業放到前臺來運行,此時將2號作業結束,然後jobs可以發現已經沒有了2號作業,如圖:
在這裏插入圖片描述
可以看出ctrl+c是終止作業的。
此時如果我們將3號作業和4號作業都終止掉,只剩下1號作業,然後此時我們將1號作業放到前臺,但是又想返回後臺,此時可以使用ctrl+z命令,然後發現現在作業停止,然後使用bg(back ground)命令將1號作業放到後臺,例如:
在這裏插入圖片描述
可以看出實現了這個功能。
因此我們可以得出,當啓動一個前臺作業時,我們輸入命令是沒有用的,因爲此時bash已經被放到了後臺,終止掉這個作業就可以輸入命令,因爲此時bash放到了前臺,例如:
在這裏插入圖片描述

守護進程

也稱精靈進程,是放在後臺的一種特殊進程。
linux後臺的一些系統服務進程,沒有控制終端,不能直接和用戶交互,不受用戶登錄和註冊的影響,一直在運行着,都是守護進程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章