Linux的進程之間有哪些關(guān)系
Linux的進程之間有哪些關(guān)系
Linux的進程相互之間有一定的關(guān)系。比如說,在Linux的進程基礎(chǔ)中,我們看到,每個進程都有父進程,而所有的進程以init進程為根,形成一個樹狀結(jié)構(gòu)。我們在這里講解進程組和會話,以便以更加豐富的方式了管理進程。那么具體有哪些關(guān)系呢?一起來學(xué)習(xí)下吧。
進程組 (process group)
每個進程都會屬于一個進程組(process group),每個進程組中可以包含多個進程。進程組會有一個進程組領(lǐng)導(dǎo)進程 (process group leader),領(lǐng)導(dǎo)進程的PID (PID見Linux的進程基礎(chǔ))成為進程組的ID (process group ID, PGID),以識別進程組。
代碼如下:
$ps -o pid,pgid,ppid,comm | cat《/p》 《p》 PID PGID PPID COMMAND
17763 17763 17751 bash
18534 18534 17763 ps
18535 18534 17763 cat
PID為進程自身的ID,PGID為進程所在的進程組的ID, PPID為進程的父進程ID。從上面的結(jié)果,我們可以推測出如下關(guān)系:
圖中箭頭表示父進程通過fork和exec機制產(chǎn)生子進程。ps和cat都是bash的子進程。進程組的領(lǐng)導(dǎo)進程的PID成為進程組ID。領(lǐng)導(dǎo)進程可以先終結(jié)。此時進程組依然存在,并持有相同的PGID,直到進程組中最后一個進程終結(jié)。
我們將一些進程歸為進程組的一個重要原因是我們可以將信號發(fā)送給一個進程組。進程組中的所有進程都會收到該信號。我們會在下一部分深入討論這一點。
會話 (session)
更進一步,在shell支持工作控制(job control)的前提下,多個進程組還可以構(gòu)成一個會話 (session)。bash(Bourne-Again shell)支持工作控制,而sh(Bourne shell)并不支持。
會話是由其中的進程建立的,該進程叫做會話的領(lǐng)導(dǎo)進程(session leader)。會話領(lǐng)導(dǎo)進程的PID成為識別會話的SID(session ID)。會話中的每個進程組稱為一個工作(job)。會話可以有一個進程組成為會話的前臺工作(foreground),而其他的進程組是后臺工作(background)。每個會話可以連接一個控制終端(control terminal)。當(dāng)控制終端有輸入輸出時,都傳遞給該會話的前臺進程組。由終端產(chǎn)生的信號,比如CTRL+Z, CTRL+\,會傳遞到前臺進程組。
會話的意義在于將多個工作囊括在一個終端,并取其中的一個工作作為前臺,來直接接收該終端的輸入輸出以及終端信號。 其他工作在后臺運行。
一個命令可以通過在末尾加上&方式讓它在后臺運行:
代碼如下:
$ping localhost 》 log &
此時終端顯示:
代碼如下:
[1] 10141
括號中的1表示工作號,而10141為PGID
我們通過如下方式查詢更加詳細(xì)的信息:
代碼如下:
$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
當(dāng)我們運行第一個命令后,由于工作在后臺,我們無法對命令進行輸入,直到我們將工作帶入前臺,才能向cat命令輸入。在輸入完成后,按下CTRL+D來通知shell輸入結(jié)束。
進程組(工作)的概念較為簡單易懂。而會話主要是針對一個終端建立的。當(dāng)我們打開多個終端窗口時,實際上就創(chuàng)建了多個終端會話。每個會話都會有自己的前臺工作和后臺工作。這樣,我們就為進程增加了管理和運行的層次。在沒有圖形化界面的時代,會話允許用戶通過shell進行多層次的進程發(fā)起和管理。比如說,我可以通過shell發(fā)起多個后臺工作,而此時標(biāo)準(zhǔn)輸入輸出并不被占據(jù),我依然可以繼續(xù)其它的工作。如今,圖形化界面可以幫助我們解決這一需求,但工作組和會話機制依然在Linux的許多地方應(yīng)用。
補充:系統(tǒng)常用維護技巧
1,在 “開始” 菜單中選擇 “控制面板” 選項,打開 “控制面板” 窗口,單擊 “管理工具” 鏈接
2,在打開的 “管理工具” 窗口中雙擊 “事件查看器” 圖標(biāo)
3, 接著會打開 “事件查看器” 窗口
4,在右側(cè)窗格中的樹狀目錄中選擇需要查看的日志類型,如 “事件查看器本地--Win日志--系統(tǒng)日志,在接著在中間的 “系統(tǒng)” 列表中即查看到關(guān)于系統(tǒng)的事件日志
5,雙擊日志名稱,可以打開 “事件屬性” 對話框,切換到 “常規(guī)” 選項卡,可以查看該日志的常規(guī)描述信息
6,切換到 “詳細(xì)信息” 選項卡,可以查看該日志的詳細(xì)信息
7,打開 “控制面板” 窗口,單擊 “操作中心” 鏈接,打開 “操作中心” 窗口,展開 “維護” 區(qū)域
8,單擊 “查看可靠性歷史記錄” 鏈接,打開 “可靠性監(jiān)視程序” 主界面,如圖所示, 用戶可以選擇按天或者按周為時間單位來查看系統(tǒng)的穩(wěn)定性曲線表,如果系統(tǒng)近日沒出過什么狀況, 那么按周來查看會比較合適。觀察圖中的曲線可以發(fā)現(xiàn),在某段時間內(nèi),系統(tǒng)遇到些問題,可靠性指數(shù)曲線呈下降的趨勢,并且在這段時間系統(tǒng)遇到了三次問題和一次警告,在下方的列表中可以查看詳細(xì)的問題信息。
相關(guān)閱讀:系統(tǒng)故障導(dǎo)致死機怎么解決
1、病毒原因造成電腦頻繁死機
由于此類原因造成該故障的現(xiàn)象比較常見,當(dāng)計算機感染病毒后,主要表現(xiàn)在以下幾個方面:
?、傧到y(tǒng)啟動時間延長;
②系統(tǒng)啟動時自動啟動一些不必要的程序;
?、蹮o故死機
?、芷聊簧铣霈F(xiàn)一些亂碼。
其表現(xiàn)形式層出不窮,由于篇幅原因就介紹到此,在此需要一并提出的是,倘若因為病毒損壞了一些系統(tǒng)文件,導(dǎo)致系統(tǒng)工作不穩(wěn)定,我們可以在安全模式下用系統(tǒng)文件檢查器對系統(tǒng)文件予以修復(fù)。
2、由于某些元件熱穩(wěn)定性不良造成此類故障(具體表現(xiàn)在CPU、電源、內(nèi)存條、主板)
對此,我們可以讓電腦運行一段時間,待其死機后,再用手觸摸以上各部件,倘若溫度太高則說明該部件可能存在問題,我們可用替換法來診斷。值得注意的是在安裝CPU風(fēng)扇時最好能涂一些散熱硅脂,但我在某些組裝的電腦上卻是很難見其蹤影,實踐證明,硅脂能降低溫度5—10度左右,特別是P Ⅲ 的電腦上,倘若不涂散熱硅脂,計算機根本就不能正常工作,曾遇到過一次此類現(xiàn)象。該機主要配置如下:磐英815EP主板、PⅢ733CPU、133外頻的128M內(nèi)存條,當(dāng)該機組裝完后,頻繁死機,連Windows系統(tǒng)都不能正常安裝,但是更換賽揚533的CPU后,故障排除,懷疑主板或CPU有問題,但更換同型號的主板、CPU后該故障也不能解決。后來由于發(fā)現(xiàn)其溫度太高,在CPU上涂了一些散熱硅脂,故障完全解決。實踐證明在賽揚533以上的CPU上必須要涂散熱硅脂,否則極有可能引起死機故障。
3、由于各部件接觸不良導(dǎo)致計算機頻繁死機
此類現(xiàn)象比較常見,特別是在購買一段時間的電腦上。由于各部件大多是靠金手指與主板接觸,經(jīng)過一段時間后其金手指部位會出現(xiàn)氧化現(xiàn)象,在拔下各卡后會發(fā)現(xiàn)金手指部位已經(jīng)泛黃,此時,我們可用橡皮擦來回擦拭其泛黃處來予以清潔。
4、由于硬件之間不兼容造成電腦頻繁死機
此類現(xiàn)象常見于顯卡與其它部件不兼容或內(nèi)存條與主板不兼容,例如SIS的顯卡,當(dāng)然其它設(shè)備也有可能發(fā)生不兼容現(xiàn)象,對此可以將其它不必要的設(shè)備如Modem、聲卡等設(shè)備拆下后予以判斷。
5、軟件沖突或損壞引起死機
此類故障,一般都會發(fā)生在同一點,對此可將該軟件卸掉來予以解決。