电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

對(duì)話 UNIX,第 8 部分: UNIX 進(jìn)程

瀏覽:121日期:2024-06-18 10:03:46

在最近的街頭游樂(lè)會(huì)上,有一個(gè)單人樂(lè)隊(duì)讓我很是著迷。的確,這讓我很開(kāi)心,還給我留下了深刻印象。這個(gè)單人樂(lè)隊(duì)的唯一成員利用嘴、大腿、膝蓋和腳分別控制口琴、五弦琴、鈸和腳鼓,生動(dòng)地演奏了齊柏林飛船樂(lè)隊(duì)的《天堂的階梯》,他演奏的貝多芬《第五交響曲》也頗為動(dòng)人。和他相比,我能一邊拍腦袋一邊摸肚子就覺(jué)得很不錯(cuò)了。(或者是一邊拍肚子一邊摸腦袋。)

對(duì)您來(lái)說(shuō),幸運(yùn)的是,Unix® 操作系統(tǒng)更像是那個(gè)單人樂(lè)隊(duì),而不是像我這個(gè)笨手笨腳的專欄作家。UNIX 特別擅長(zhǎng)同時(shí)處理多個(gè)任務(wù),并安排它們?cè)L問(wèn)系統(tǒng)中的有限資源(內(nèi)存、設(shè)備和 CPU)。打個(gè)比方,UNIX 可以一邊散步,一邊嚼口香糖。

這個(gè)月我們研究的內(nèi)容要比平常更深入一些,我們會(huì)看看 UNIX 是如何同時(shí)做這么多事的。這次我們還會(huì)探索 shell 的內(nèi)部,了解工作控制命令,如 Ctrl+C(終止)和 Ctrl+Z(掛起)是怎樣實(shí)現(xiàn)的。

一個(gè)真正的多任務(wù)系統(tǒng)

在 UNIX(以及大多數(shù)現(xiàn)代操作系統(tǒng),包括 Microsoft® Windows®、Mac OS X、FreeBSD 和 Linux®)中,每個(gè)計(jì)算任務(wù)都是由一個(gè)進(jìn)程表示的。UNIX 似乎能同時(shí)運(yùn)行很多任務(wù),這是因?yàn)槊總€(gè)進(jìn)程都會(huì)輪流(從概念上來(lái)講)分到一小片 CPU 時(shí)間。

一個(gè)進(jìn)程就像一個(gè)容器,它與某個(gè)正在運(yùn)行的應(yīng)用程序、環(huán)境變量、應(yīng)用程序的輸入和輸出,以及進(jìn)程的狀態(tài)(包括其優(yōu)先級(jí)和累計(jì)資源使用情況)捆綁在一起。圖 1 顯示了一個(gè)進(jìn)程。

圖 1. UNIX 進(jìn)程的概念化模型

為了便于理解,您可以把一個(gè)進(jìn)程想像成一個(gè)獨(dú)立的國(guó)家,有邊界、資源,還有國(guó)民生產(chǎn)總值。

每個(gè)進(jìn)程還有一個(gè)所有者。一般來(lái)說(shuō),您啟動(dòng)的任務(wù)(如您的 shell 和命令)的所有者就是您。系統(tǒng)服務(wù)的所有者可能是特殊用戶或超級(jí)用戶 root。例如,為了增強(qiáng)安全性,Apache HTTP Server 的所有者一般是一個(gè)名為 www 的專用用戶,該用戶能提供 Web 服務(wù)器所需的的文件訪問(wèn)權(quán)限,但不包含其他權(quán)限。

進(jìn)程的所有權(quán)可能會(huì)改變,但必須嚴(yán)格保持其獨(dú)占性。一個(gè)進(jìn)程在任何時(shí)候都只能有一個(gè)所有者。

最后,每個(gè)進(jìn)程都具有權(quán)限。一般來(lái)說(shuō),進(jìn)程的權(quán)限與其所有者的權(quán)限是相稱的。(例如,如果您無(wú)法在命令行 Shell 中訪問(wèn)某個(gè)特定文件,則您從 Shell 中啟動(dòng)的程序也會(huì)繼承同樣的限制。)這一繼承規(guī)則有一個(gè)例外情況,即應(yīng)用程序啟用了特殊的 setuid 或 setgid 位,如 ls 顯示的那樣,在此情況下,某個(gè)進(jìn)程可能會(huì)獲得比其所有者更高的權(quán)限。

setuid 位可以使用 chmod u+s 進(jìn)行設(shè)置。setuid 的權(quán)限如下所示:

$ ls -l /usr/bin/top-rwsr-xr-x 1 root wheel 83088 Mar 20 2005 top

setgid 位可以使用 chmod g+s 設(shè)置:

$ ls -l /usr/bin/top-r-xr-sr-x  1 root tty 19388 Mar 20 2005 /usr/bin/wall

一個(gè) setuid 進(jìn)程(如啟動(dòng) top)是用擁有該文件的用戶權(quán)限運(yùn)行的。因此,當(dāng)您運(yùn)行 top 時(shí),您的權(quán)限會(huì)被提升,與 root 的權(quán)限等同。類似地,一個(gè) setgid 進(jìn)程是用與文件的組所有者相關(guān)聯(lián)的權(quán)限運(yùn)行的。

例如,在 Mac OS X 中,wall 工具(“write all的縮寫(xiě),因其會(huì)將某個(gè)消息寫(xiě)入所有物理或虛擬終端設(shè)備而得名)的 setgid 被設(shè)為tty(如上所示)。當(dāng)您登錄并分配到一個(gè)用來(lái)鍵入的終端設(shè)備(該終端成為 Shell 的標(biāo)準(zhǔn)輸入)時(shí),您將被指定為該設(shè)備的所有者,而 tty 成為組所有者。因?yàn)?wall 是以組 tty 的權(quán)限運(yùn)行的,所以它可以打開(kāi)和寫(xiě)入所有終端。

獲取列表

就像所有其他系統(tǒng)資源一樣,您的 Unix 有一個(gè)有限但十分龐大的進(jìn)程池(實(shí)際上,系統(tǒng)中的進(jìn)程幾乎用之不盡)。每個(gè)新任務(wù)(如啟動(dòng) vi 或運(yùn)行 xclock)都會(huì)立即從池中分配到一個(gè)進(jìn)程。在 UNIX 系統(tǒng)中,您可以使用 ps 命令,查看一個(gè)或多個(gè)進(jìn)程。

例如,如果您想查看您擁有的所有進(jìn)程,鍵入 ps -w --user username :$ ps -w --user mstreicher

您可以使用 ps -a -w -x 查看完整的進(jìn)程列表。(ps 命令的格式和特定的標(biāo)志隨各個(gè) UNIX 版本而有所差異。請(qǐng)參閱系統(tǒng)的聯(lián)機(jī)文檔,以查找具體的說(shuō)明。) -a 是選擇 tty 設(shè)備上運(yùn)行的所有進(jìn)程;-x 則可進(jìn)一步選擇與 tty 無(wú)關(guān)的所有進(jìn)程,通常包括所有的永久系統(tǒng)服務(wù),如 Apache HTTP server、cron 工作調(diào)度程序等等;-w 則以加寬的格式顯示內(nèi)容,在查看命令行或與每個(gè)進(jìn)程相關(guān)的應(yīng)用程序完整路徑名時(shí)很有用。

ps 具有豐富的功能,某些版本的 ps 甚至允許您自定義輸出。例如,下面就是一個(gè)有用的自定義進(jìn)程列表:

$ ps --user mstreicher -o pid,uname,command,state,stime,time PID USER COMMAND S STIME TIME14138 mstreic sshd: mstreicher S 09:57 00:00:0014139 mstreic -bashS 09:57 00:00:0014937 mstreic ps --user mstrei R 10:23 00:00:00

-o 根據(jù)各列名稱的順序?qū)敵鲞M(jìn)行格式化。pid、uname 和 command 分別指進(jìn)程 ID、用戶名和命令。state 代表進(jìn)程的狀態(tài),如正在睡眠 (S) 或運(yùn)行 (R)。(稍后將對(duì)進(jìn)程狀態(tài)進(jìn)行更詳細(xì)的說(shuō)明。)stime 顯示命令的開(kāi)始時(shí)間,time 則顯示該進(jìn)程占用了多少 CPU 時(shí)間。

進(jìn)程從哪里來(lái)?

在 Unix 中,某些進(jìn)程會(huì)從系統(tǒng)啟動(dòng)到關(guān)機(jī)的時(shí)間里一直運(yùn)行,但大多數(shù)進(jìn)程都會(huì)隨任務(wù)的開(kāi)始和完成而迅速地出現(xiàn)和消失。有時(shí),某個(gè)進(jìn)程可能會(huì)“早夭“,甚至?xí)?ldquo;暴死(比如在系統(tǒng)崩潰時(shí))。新的進(jìn)程是從哪里來(lái)的呢?

每個(gè)新的 UNIX 進(jìn)程都是某個(gè)現(xiàn)有進(jìn)程的產(chǎn)物。另外,每個(gè)新進(jìn)程(不妨將其稱為“子進(jìn)程)是對(duì)“父進(jìn)程的克隆體(至少有一瞬間是如此),直到“子進(jìn)程繼續(xù)獨(dú)立執(zhí)行為止。(如果每個(gè)進(jìn)程都是某個(gè)現(xiàn)有進(jìn)程的后代,那么不免會(huì)有一個(gè)疑問(wèn):“第一個(gè)進(jìn)程是從哪里來(lái)的?請(qǐng)參閱下面的側(cè)欄以尋找答案。)

雞和蛋

某些爭(zhēng)論是經(jīng)久不息的:生存還是毀滅?可口可樂(lè)還是百事可樂(lè)?PC 還是 Mac?當(dāng)然,還有一個(gè)古老的悖論,“雞生蛋,還是蛋生雞?

如果每個(gè)新的 UNIX 進(jìn)程都是某個(gè)現(xiàn)有的、正在運(yùn)行的進(jìn)程的后代,那么第一個(gè)進(jìn)程是從哪里來(lái)的?答案是:UNIX 內(nèi)核在系統(tǒng)啟動(dòng)序列中產(chǎn)生了第一個(gè)進(jìn)程。

第一個(gè)進(jìn)程被恰如其分地稱為 init,所有其他系統(tǒng)進(jìn)程的親緣關(guān)系最終都可以追溯到 init。實(shí)際上,init 的進(jìn)程編號(hào)是 1。如果您要查看 init 的狀態(tài),可鍵入 ps -l 1:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD4 S  0  10 0 68  0 -  373 select ?  0:02 init [2]正如您所看到的,init 的所有者 (UID) 是 0 (root)。和系統(tǒng)中所有其他進(jìn)程不同的是,init 沒(méi)有父進(jìn)程,它的父進(jìn)程 ID (PPID) 為 0。

圖 1-4 詳細(xì)說(shuō)明了進(jìn)程的產(chǎn)生過(guò)程:

在圖 2 和圖 3 中,進(jìn)程 A (Process A),正在運(yùn)行一個(gè)由藍(lán)色方框表示的程序。它運(yùn)行編號(hào)為 10,11,12…的指令。進(jìn)程 A 有屬于自己的數(shù)據(jù)、程序的副本、打開(kāi)的文件集,以及自己的環(huán)境變量集,當(dāng)進(jìn)程 A 剛出現(xiàn)時(shí),會(huì)對(duì)它們進(jìn)行初次捕捉。

圖 2. 進(jìn)程 A 運(yùn)行代碼

在 Unix 中,fork() 系統(tǒng)調(diào)用(之所以有這個(gè)名稱,是因?yàn)樗且粋€(gè)調(diào)用或請(qǐng)求,要求操作系統(tǒng)進(jìn)行協(xié)助)被用來(lái)產(chǎn)生新的進(jìn)程。當(dāng)程序 A (Program A) 執(zhí)行指令 13 (Instruction 13) fork() 時(shí),系統(tǒng)會(huì)立即創(chuàng)建進(jìn)程 A 的一個(gè)精確克隆版本,并將其命名為進(jìn)程 Z (Process Z)。Z 具有和 A 相同的環(huán)境變量、相同的內(nèi)存內(nèi)容、相同的程序狀態(tài),打開(kāi)的文件也一樣。圖 3 顯示的是進(jìn)程 A 生成進(jìn)程 Z后,進(jìn)程 A 和 Z 的狀態(tài)。

圖 3. 進(jìn)程 A 生成自身的克隆體

起初,進(jìn)程 Z 是從進(jìn)程 A 停止的地方開(kāi)始執(zhí)行的。也就是說(shuō),此后進(jìn)程 Z 從指令 14 (Instruction 14) 處開(kāi)始執(zhí)行。進(jìn)程 A 會(huì)在同一指令位置繼續(xù)執(zhí)行。

一般來(lái)說(shuō),指令 14 處的編程邏輯將測(cè)試當(dāng)前的進(jìn)程是子進(jìn)程還是父進(jìn)程,也就是說(shuō),進(jìn)程 Z 和進(jìn)程 A 中的指令 14 分別判定這兩個(gè)進(jìn)程是否為其他進(jìn)程的后代或祖先。為了以示區(qū)別,fork() 系統(tǒng)調(diào)用在子進(jìn)程中返回 0,但返回給父進(jìn)程的卻是進(jìn)程 Z 的進(jìn)程 ID。

在上次測(cè)試之后,進(jìn)程 A 和進(jìn)程 Z 會(huì)出現(xiàn)差異,每個(gè)進(jìn)程會(huì)采用單獨(dú)的代碼路徑,就像路上出現(xiàn)岔道,每一個(gè)都會(huì)走上不同的分枝。生成一個(gè)新進(jìn)程的流程更多地被稱為分叉,這就像兩位旅行者走到了路上的岔道。因此,系統(tǒng)調(diào)用被命名為 fork()。

在分叉之后,進(jìn)程 A 可能會(huì)繼續(xù)運(yùn)行同一個(gè)應(yīng)用程序。而進(jìn)程 Z 則可能立即發(fā)生變化,轉(zhuǎn)到另一個(gè)應(yīng)用程序。后一種操作會(huì)改變程序通過(guò)進(jìn)程運(yùn)行的內(nèi)容,它被稱為執(zhí)行,但您可以把它看成是一次再生過(guò)程:雖然進(jìn)程 ID 不變,但進(jìn)程內(nèi)部的指令會(huì)被新程序的指令完全取代。圖 4 顯示的是稍后進(jìn)程 Z 的狀態(tài)。

圖 4. 進(jìn)程 Z 現(xiàn)在獨(dú)立于它的祖先,即進(jìn)程 A

分叉

您可以在自己的命令行,很方便地體驗(yàn)分叉操作。首先,打開(kāi)一個(gè)新的 xterm。(您現(xiàn)在可能會(huì)認(rèn)識(shí)到,xterm 就是它本身的進(jìn)程,在 xterm 中,shell 是由 xterm 產(chǎn)生的一個(gè)獨(dú)立進(jìn)程)。接下來(lái),輸入:ps -o pid,ppid,uname,command,state,stime,time

您應(yīng)該會(huì)看到類似這樣的內(nèi)容: PID PPID USER COMMAND S STIME TIME16351 16350 mstreic -bashS 11:23 00:00:0016364 16351 mstreic ps -o pid,ppid,u R 11:24 00:00:00

從該列表的 PPID 字段中,我們知道 ps 命令是 bash shell 的子進(jìn)程。(-bash 中的連字符說(shuō)明 shell 實(shí)例是一個(gè)登錄 shell。)為了運(yùn)行 ps,bash 會(huì)分叉,創(chuàng)建一個(gè)新進(jìn)程;新進(jìn)程通過(guò)使用執(zhí)行,使其本身得以重生,轉(zhuǎn)化為 ps 的一個(gè)新的實(shí)例。

這里是另一個(gè)可供嘗試的實(shí)驗(yàn)。鍵入:sleep 10 & sleep 10 & sleep 10 & ps -o pid,ppid,uname,command,state,stime,time

您應(yīng)該會(huì)看到類似這樣的內(nèi)容:$ sleep 10 & sleep 10 & sleep 10 & ps -o pid,ppid,uname,command,state,stime,time PID PPID USER COMMAND S STIME TIME16351 16350 mstreic -bashS 11:23 00:00:0016843 16351 mstreic sleep 10 S 11:42 00:00:0016844 16351 mstreic sleep 10 S 11:42 00:00:0016845 16351 mstreic sleep 10 S 11:42 00:00:0016846 16351 mstreic ps -o pid,ppid,u R 11:42 00:00:00

命令行生成四個(gè)新進(jìn)程。在每個(gè) sleep 命令后鍵入 &,在后臺(tái)運(yùn)行每一個(gè)命令,或與 Shell 并行。 ps 是生成的另一個(gè)進(jìn)程,但它是在前臺(tái)運(yùn)行的,可以防止 shell 在該進(jìn)程終止之前運(yùn)行其他命令。而且,如 PPID 的值所示,所有四個(gè)進(jìn)程都是 Shell 的后代。三個(gè) sleep 命令都被標(biāo)為 S,因?yàn)闆](méi)有哪個(gè)進(jìn)程會(huì)在它們睡眠時(shí)使用資源。

為了方便起見(jiàn),shell 會(huì)持續(xù)跟蹤它生成的所有后臺(tái)進(jìn)程。鍵入 jobs,可以看到一個(gè)列表:

$ sleep 10 & sleep 10 & sleep 10 &[1] 16843[2] 16844[3] 16845$ jobs[1]  Running sleep 10 &[2]  Running sleep 10 &[3]  Running sleep 10 &

此處,為了方便起見(jiàn),三個(gè)工作分別用標(biāo)簽標(biāo)為 1,2 和 3。數(shù)字 16843、16844 和 16845 分別是每個(gè)進(jìn)程的進(jìn)程 ID。因此,后臺(tái)任務(wù) 1 即為進(jìn)程 ID 16843。

您可以利用這些標(biāo)簽,從命令行操作您的后臺(tái)工作。例如,如要終止某個(gè)命令,鍵入 kill %N ,其中 N 是該命令的標(biāo)簽。如要將某個(gè)命令由后臺(tái)移到前臺(tái),請(qǐng)鍵入 fg %N :

$ sleep 10 & sleep 10 & sleep 10 &[7] 17741[8] 17742[9] 17743$ kill %7$ jobs[7]  Terminated sleep 10[8]- Running sleep 10 &[9]+ Running sleep 10 &$ fg %8sleep 10

從命令行中同時(shí)異步運(yùn)行多個(gè)命令,是處理您自己的任務(wù)集的好方法。一個(gè)長(zhǎng)時(shí)間運(yùn)行的工作(例如,系統(tǒng)管理的數(shù)值計(jì)算或大型程序的編譯)最適合放在后臺(tái)。為了捕獲每個(gè)后臺(tái)命令的輸出,請(qǐng)考慮使用重定向操作符 >、>&、>> 和 >>&,將輸入重定向到某個(gè)文件。當(dāng)后臺(tái)命令結(jié)束后,shell 會(huì)在下一個(gè)提示符之前顯示一條警告消息:

$ whoamimstreicher[8]- Donesleep 10[9]+ Donesleep 10$

向遙遠(yuǎn)的進(jìn)程池前進(jìn)

某些進(jìn)程會(huì)一直存活(如 init),而某些進(jìn)程會(huì)以新的形式重生(如您的 shell)。最終大多進(jìn)程都會(huì)因自然原因(即程序運(yùn)行結(jié)束)而消亡。

此外,您還可以將某個(gè)進(jìn)程放在一個(gè)掛起的動(dòng)作序列中,等待被再次激活。正如先前的示例所示,您可以用 kill 提前終止某個(gè)進(jìn)程。

當(dāng)某個(gè)命令在前臺(tái)運(yùn)行時(shí),如果您希望將它掛起,請(qǐng)按 Ctrl + Z:

$ sleep 10(Press Control-Z)[1]+ Stopped sleep 10$ ps PID PPID USER COMMAND S STIME TIME18195 16351 mstreic sleep 10 T 12:44 00:00:00

Shell 已將命令掛起,為了方便起見(jiàn),還為它分配了一個(gè)標(biāo)簽。您可以像先前那樣使用這個(gè)標(biāo)簽,以終止工作或讓工作返回前臺(tái)。您還可以使用 bg 命令在后臺(tái)恢復(fù)這個(gè)進(jìn)程:

bg %1[1]+ sleep 10 &

當(dāng)某個(gè)命令在前臺(tái)運(yùn)行時(shí),如果您想終止它,請(qǐng)按 Ctrl + C:

$ sleep 10(Press Control-C$ jobs$

您的 Shell 能使進(jìn)程的掛起和終止變得更容易,但在 Shell 單純的外表下,卻隱藏著復(fù)雜的一面。在內(nèi)部,Shell 使用 Unix 信號(hào)來(lái)影響進(jìn)程的狀態(tài)。信號(hào)是一個(gè)事件,它被用來(lái)向某個(gè)進(jìn)程發(fā)出警報(bào)。操作系統(tǒng)生成許多信號(hào),但您可以將信號(hào)從一個(gè)進(jìn)程發(fā)送到另一個(gè)進(jìn)程,甚至能讓某個(gè)進(jìn)程給自己發(fā)送信號(hào)。

UNIX 包括多種信號(hào),它們大多都有特殊目的。例如,如果您將信號(hào) SIGSTOP 發(fā)送到某個(gè)進(jìn)程,該進(jìn)程將掛起。(要獲取信號(hào)的完整列表,請(qǐng)鍵入 man 7 signal 或鍵入 kill -L)。您可以用 kill 命令發(fā)送信號(hào)。

$ sleep 20 &[1] 19988$ kill -SIGSTOP 19988$ jobs[1]+ Stopped sleep 20

起初,sleep 命令在后臺(tái)啟動(dòng),其進(jìn)程 ID 為 19988。在發(fā)送 SIGSTOP 之后,該進(jìn)程會(huì)改變狀態(tài),變?yōu)閽炱鸹蛲V埂0l(fā)送另一個(gè)信號(hào) SIGCONT,重新激活進(jìn)程,該進(jìn)程將從上次停止的地方繼續(xù)執(zhí)行。

也就是說(shuō),每次您按 Ctrl + Z 時(shí),您的 shell 將向前臺(tái)發(fā)送 SIGSTOP 信號(hào)。bg 命令發(fā)送 SIGCONT。而 Ctrl + C 則會(huì)發(fā)送 SIGTERM,要求立即終止進(jìn)程。

一些信號(hào)可以被某個(gè)進(jìn)程阻塞,應(yīng)用程序可以通過(guò)設(shè)計(jì),顯式地“捕捉 (catch)信號(hào),并以一種特殊的方式對(duì)每個(gè)事件作出反應(yīng)。例如,系統(tǒng)服務(wù) xinetd 會(huì)按需要啟動(dòng)其他網(wǎng)絡(luò)服務(wù),它在收到 SIGHUP 時(shí)會(huì)重新讀取它的配置文件。在 Linux 中,向 init 發(fā)送信號(hào),可能會(huì)改變系統(tǒng)的運(yùn)行級(jí)別,甚至?xí)?dǎo)致系統(tǒng)關(guān)閉。.(這里有一個(gè)問(wèn)題:kill %1 和 kill 1 有什么區(qū)別?

進(jìn)程甚至可以給自己發(fā)送信號(hào)。想像一下,您正在編寫(xiě)一個(gè)游戲,想留給用戶五秒鐘時(shí)間作出反應(yīng)。您的代碼可以設(shè)置一個(gè)五秒鐘的定時(shí)器,接下來(lái)繼續(xù)進(jìn)行重繪屏幕等操作。當(dāng)定時(shí)器的時(shí)間耗盡后,將有一個(gè) SIGALRM 信號(hào)被送回您的進(jìn)程。呯!時(shí)間到!

(這里提供了問(wèn)題的答案:kill %1 會(huì)終止標(biāo)簽為 1 的后臺(tái)工作。kill 1 會(huì)終止 init,當(dāng)必須關(guān)閉計(jì)算機(jī)時(shí),將向操作系統(tǒng)發(fā)送這個(gè)信號(hào)。)

在特殊情況下,操作系統(tǒng)還可以將一些其他信號(hào)傳送給進(jìn)程。內(nèi)存違例會(huì)引發(fā) SIGSEGV 信號(hào),立即終止進(jìn)程,并留下一個(gè)內(nèi)核轉(zhuǎn)儲(chǔ)。有一個(gè)特殊的信號(hào) SIGKILL 是無(wú)法被阻塞或捕捉的,它會(huì)立即終止某個(gè)進(jìn)程。

和 Unix 中許多其他資源一樣,您只能向您擁有的進(jìn)程發(fā)送信號(hào)。這可以防止您終止重要的系統(tǒng)服務(wù)和其他用戶的進(jìn)程。超級(jí)用戶 root 可以向任何進(jìn)程發(fā)送信號(hào)。

更多魔法揭密

UNIX 有許多可活動(dòng)的部分。它有系統(tǒng)服務(wù)、設(shè)備、內(nèi)存管理器等等。好在這些復(fù)雜的花樣大都被隱藏起來(lái),不會(huì)被看到,或可以通過(guò)用戶界面(如 shell 或窗口工具)很方便地使用。更妙的是,如果您想深入探究,隨時(shí)都可以使用 top, ps 和 kill 等專用工具。

現(xiàn)在您已經(jīng)知道了進(jìn)程的工作原理,可以組成自己的單人樂(lè)隊(duì)了。只有一個(gè)要求:成為一只自由自在的飛鳥(niǎo)!

標(biāo)簽: Unix系統(tǒng)
相關(guān)文章:
主站蜘蛛池模板: 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 公交驾校-北京公交驾校欢迎您!| 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | OpenI 启智 新一代人工智能开源开放平台| 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 长城人品牌官网 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 深圳湾1号房价_深圳湾1号二手房源| LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 |