久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Linux進程關系是怎樣的

146次閱讀
沒有評論

共計 1819 個字符,預計需要花費 5 分鐘才能閱讀完成。

本篇內容主要講解“Linux 進程關系是怎樣的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Linux 進程關系是怎樣的”吧!

Linux 的進程相互之間有一定的關系。比如說,在
Linux 進程基礎中,我們看到,每個進程都有父進程,而所有的進程以 init 進程為根,形成一個樹狀結構。我們在這里講解進程組和會話,以便以更加豐富的方式了管理進程。
 
進程組 (process group)

每個進程都會屬于一個進程組 (process group),每個進程組中可以包含多個進程。進程組會有一個進程組領導進程 (process group leader),領導進程的 PID (PID 見 Linux 進程基礎) 成為進程組的 ID (process group ID, PGID),以識別進程組。

$ps -o pid,pgid,ppid,comm | cat

  PID  PGID  PPID COMMAND
17763 17763 17751 bash
18534 18534 17763 ps
18535 18534 17763 cat
PID 為進程自身的 ID,PGID 為進程所在的進程組的 ID,PPID 為進程的父進程 ID。從上面的結果,我們可以推測出如下關系:

圖中箭頭表示父進程通過 fork 和 exec 機制產生子進程。ps 和 cat 都是 bash 的子進程。進程組的領導進程的 PID 成為進程組 ID。領導進程可以先終結。此時進程組依然存在,并持有相同的 PGID,直到進程組中最后一個進程終結。

我們將一些進程歸為進程組的一個重要原因是我們可以將信號發(fā)送給一個進程組。進程組中的所有進程都會收到該信號。我們會在下一部分深入討論這一點。
 
會話 (session)

更進一步,在 shell 支持工作控制 (job control) 的前提下,多個進程組還可以構成一個會話 (session)。bash(Bourne-Again shell)支持工作控制,而 sh(Bourne shell)并不支持。

會話是由其中的進程建立的,該進程叫做會話的領導進程(session leader)。會話領導進程的 PID 成為識別會話的 SID(session ID)。會話中的每個進程組稱為一個工作(job)。會話可以有一個進程組成為會話的前臺工作(foreground),而其他的進程組是后臺工作(background)。每個會話可以連接一個控制終端(control terminal)。當控制終端有輸入輸出時,都傳遞給該會話的前臺進程組。由終端產生的信號,比如 CTRL+Z,CTRL+\,會傳遞到前臺進程組。

會話的意義在于將多個工作囊括在一個終端,并取其中的一個工作作為前臺,來直接接收該終端的輸入輸出以及終端信號。其他工作在后臺運行。

一個命令可以通過在末尾加上 方式讓它在后臺運行:

$ping localhost log

此時終端顯示:

[1] 10141

括號中的 1 表示工作號,而 10141 為 PGID

我們通過如下方式查詢更加詳細的信息:

$ps -o pid,pgid,ppid,sid,tty,comm

(tty 表示控制終端)

信號可以通過 kill

$kill -SIGTERM -10141

或者

$kill -SIGTERM %1

的方式來發(fā)送給工作組。上面的兩個命令,一個是發(fā)送給 PGID(通過在 PGID 前面加 - 來表示是一個 PGID 而不是 PID),一個是發(fā)送給工作 1(%1),兩者等價。

一個工作可以通過 $fg 從后臺工作變?yōu)榍芭_工作:

$cat log

$fg %1

當我們運行第一個命令后,由于工作在后臺,我們無法對命令進行輸入,直到我們將工作帶入前臺,才能向 cat 命令輸入。在輸入完成后,按下 CTRL+ D 來通知 shell 輸入結束。

進程組 (工作) 的概念較為簡單易懂。而會話主要是針對一個終端建立的。當我們打開多個終端窗口時,實際上就創(chuàng)建了多個終端會話。每個會話都會有自己的前臺工作和后臺工作。這樣,我們就為進程增加了管理和運行的層次。在沒有圖形化界面的時代,會話允許用戶通過 shell 進行多層次的進程發(fā)起和管理。比如說,我可以通過 shell 發(fā)起多個后臺工作,而此時標準輸入輸出并不被占據,我依然可以繼續(xù)其它的工作。如今,圖形化界面可以幫助我們解決這一需求,但工作組和會話機制依然在 Linux 的許多地方應用。

到此,相信大家對“Linux 進程關系是怎樣的”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計1819字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 沁源县| 宝应县| 玛沁县| 日照市| 册亨县| 博乐市| 永顺县| 霍山县| 雷州市| 建昌县| 小金县| 上蔡县| 大同市| 嘉鱼县| 曲阳县| 和平县| 天柱县| 拉孜县| 五大连池市| 兰坪| 建德市| 聊城市| 洛浦县| 张家口市| 开封县| 宜黄县| 龙游县| 荣成市| 牙克石市| 河南省| 辽中县| 游戏| 玛沁县| 衡南县| 洛阳市| 邮箱| 通城县| 武强县| 苍溪县| 滨海县| 梅州市|