一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

Linux進(jìn)程關(guān)系最新解讀

時(shí)間:2024-09-09 10:44:16 Linux認證 我要投稿
  • 相關(guān)推薦

Linux進(jìn)程關(guān)系最新解讀2016

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

  進(jìn)程組 (process group)

  每個(gè)進(jìn)程都會(huì )屬于一個(gè)進(jìn)程組(process group),每個(gè)進(jìn)程組中可以包含多個(gè)進(jìn)程。進(jìn)程組會(huì )有一個(gè)進(jìn)程組領(lǐng)導進(jìn)程 (process group leader),領(lǐng)導進(jìn)程的PID (PID見(jiàn)Linux進(jìn)程基礎)成為進(jìn)程組的ID (process group ID, PGID),以識別進(jìn)程組。

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

  PID PGID PPID COMMAND

  17763 17763 17751 bash

  18534 18534 17763 ps

  18535 18534 17763 cat

  PID為進(jìn)程自身的ID,PGID為進(jìn)程所在的進(jìn)程組的ID, PPID為進(jìn)程的父進(jìn)程ID。從上面的結果,我們可以推測出如下關(guān)系:

  圖中箭頭表示父進(jìn)程通過(guò)fork和exec機制產(chǎn)生子進(jìn)程。ps和cat都是bash的子進(jìn)程。進(jìn)程組的領(lǐng)導進(jìn)程的PID成為進(jìn)程組ID。領(lǐng)導進(jìn)程可以先終結。此時(shí)進(jìn)程組依然存在,并持有相同的PGID,直到進(jìn)程組中最后一個(gè)進(jìn)程終結。

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

  會(huì )話(huà) (session)

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

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

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

  一個(gè)命令可以通過(guò)在末尾加上&方式讓它在后臺運行:

  $ping localhost > log &

  此時(shí)終端顯示:

  [1] 10141

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

  我們通過(guò)如下方式查詢(xún)更加詳細的信息:

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

  (tty表示控制終端)

  信號可以通過(guò)kill

  $kill -SIGTERM -10141

  或者

  $kill -SIGTERM %1

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

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

  $cat > log &

  $fg %1

  當我們運行第一個(gè)命令后,由于工作在后臺,我們無(wú)法對命令進(jìn)行輸入,直到我們將工作帶入前臺,才能向cat命令輸入。在輸入完成后,按下CTRL+D來(lái)通知shell輸入結束。

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

  總結

  process group, pgid

  session, sid, job, forground, background

  fg, kill -pid, &, %

【Linux進(jìn)程關(guān)系最新解讀】相關(guān)文章:

Linux系統守護進(jìn)程的啟動(dòng)方法12-15

關(guān)于linux查看進(jìn)程ps top區別03-18

Linux概念架構解讀201603-09

Linux中的more命令解讀202405-06

Linux主機被入侵后的處理案例解讀12-27

解讀客戶(hù)關(guān)系管理的重要性06-25

多進(jìn)程O(píng)SPF及進(jìn)程號的意義03-30

最新留學(xué)就業(yè)數據解讀01-22

新西蘭留學(xué)最新優(yōu)勢解讀02-21

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看