精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >linux下的進(jìn)程管理及作業(yè)控制 創(chuàng)建者:webmaster 更新時(shí)間:2005-07-02 01:16

    Linux是一個(gè)多任務(wù)的作系統(tǒng),系統(tǒng)上同時(shí)運(yùn)行著多個(gè)進(jìn)程,正在執(zhí)行的一個(gè)或多個(gè)相關(guān)進(jìn)程稱為一個(gè)作業(yè)。使用作業(yè)控制,用戶可以同時(shí)運(yùn)行多個(gè)作業(yè),并在需要時(shí)在作業(yè)之間進(jìn)行切換。本章詳細(xì)介紹進(jìn)程管理及作業(yè)控制的命令,包括啟動(dòng)進(jìn)程、查看進(jìn)程、調(diào)度作業(yè)的命令。

    進(jìn)程及作業(yè)的概念

    Linux是一個(gè)多用戶多任務(wù)的作系統(tǒng)。多用戶是指多個(gè)用戶可以在同一時(shí)間使用計(jì)算機(jī)系統(tǒng);多任務(wù)是指Linux可以同時(shí)執(zhí)行幾個(gè)任務(wù),它可以在還未執(zhí)行完一個(gè)任務(wù)時(shí)又執(zhí)行另一項(xiàng)任務(wù)。

    作系統(tǒng)管理多個(gè)用戶的請(qǐng)求和多個(gè)任務(wù)。大多數(shù)系統(tǒng)都只有一個(gè)CPU和一個(gè)主存,但一個(gè)系統(tǒng)可能有多個(gè)二級(jí)存儲(chǔ)磁盤和多個(gè)輸入/輸出設(shè)備。作系統(tǒng)管理這些資源并在多個(gè)用戶間共享資源,當(dāng)您提出一個(gè)請(qǐng)求時(shí),給您造成一種假象,好象系統(tǒng)只被您獨(dú)自占用。而實(shí)際上作系統(tǒng)監(jiān)控著一個(gè)等待執(zhí)行的任務(wù)隊(duì)列,這些任務(wù)包括用戶作業(yè)、作系統(tǒng)任務(wù)、郵件和打印作業(yè)等。作系統(tǒng)根據(jù)每個(gè)任務(wù)的優(yōu)先級(jí)為每個(gè)任務(wù)分配合適的時(shí)間片,每個(gè)時(shí)間片大約都有零點(diǎn)幾秒,雖然看起來很短,但實(shí)際上已經(jīng)足夠計(jì)算機(jī)完成成千上萬的指令集。每個(gè)任務(wù)都會(huì)被系統(tǒng)運(yùn)行一段時(shí)間,然后掛起,系統(tǒng)轉(zhuǎn)而處理其他任務(wù);過一段時(shí)間以后再回來處理這個(gè)任務(wù),直到某個(gè)任務(wù)完成,從任務(wù)隊(duì)列中去除。

    Linux系統(tǒng)上所有運(yùn)行的東西都可以稱之為一個(gè)進(jìn)程。每個(gè)用戶任務(wù)、每個(gè)系統(tǒng)管理守護(hù)進(jìn)程,都可以稱之為進(jìn)程。Linux用分時(shí)管理方法使所有的任務(wù)共同分享系統(tǒng)資源。我們討論進(jìn)程的時(shí)候,不會(huì)去關(guān)心這些進(jìn)程究竟是如何分配的,或者是內(nèi)核如何管理分配時(shí)間片的,我們所關(guān)心的是如何去控制這些進(jìn)程,讓它們能夠很好地為用戶服務(wù)。

    進(jìn)程的一個(gè)比較正式的定義是:在自身的虛擬地址空間運(yùn)行的一個(gè)單獨(dú)的程序。進(jìn)程與程序是有區(qū)別的,進(jìn)程不是程序,雖然它由程序產(chǎn)生。程序只是一個(gè)靜態(tài)的指令集合,不占系統(tǒng)的運(yùn)行資源;而進(jìn)程是一個(gè)隨時(shí)都可能發(fā)生變化的、動(dòng)態(tài)的、使用系統(tǒng)運(yùn)行資源的程序。而且一個(gè)程序可以啟動(dòng)多個(gè)進(jìn)程。

    Linux作系統(tǒng)包括三種不同類型的進(jìn)程,每種進(jìn)程都有自己的特點(diǎn)和屬性。

     

    *

    交互進(jìn)程??由一個(gè)shell啟動(dòng)的進(jìn)程。交互進(jìn)程既可以在前臺(tái)運(yùn)行,也可以在后臺(tái)運(yùn)行。
    *

    批處理進(jìn)程??這種進(jìn)程和終端沒有聯(lián)系,是一個(gè)進(jìn)程序列。
    *

    監(jiān)控進(jìn)程(也稱守護(hù)進(jìn)程)??Linux系統(tǒng)啟動(dòng)時(shí)啟動(dòng)的進(jìn)程,并在后臺(tái)運(yùn)行。

    上述三種進(jìn)程各有各的作用,使用場(chǎng)合也有所不同。

    進(jìn)程和作業(yè)的概念也有區(qū)別。一個(gè)正在執(zhí)行的進(jìn)程稱為一個(gè)作業(yè),而且作業(yè)可以包含一個(gè)或多個(gè)進(jìn)程,尤其是當(dāng)使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”這個(gè)作業(yè)就同時(shí)啟動(dòng)了三個(gè)進(jìn)程。

    作業(yè)控制指的是控制正在運(yùn)行的進(jìn)程的行為。比如,用戶可以掛起一個(gè)進(jìn)程,等一會(huì)兒再繼續(xù)執(zhí)行該進(jìn)程。shell將記錄所有啟動(dòng)的進(jìn)程情況,在每個(gè)進(jìn)程過程中,用戶可以任意地掛起進(jìn)程或重新啟動(dòng)進(jìn)程。作業(yè)控制是許多shell(包括bash和tcsh)的一個(gè)特性,使用戶能在多個(gè)獨(dú)立作業(yè)間進(jìn)行切換。

    一般而言,進(jìn)程與作業(yè)控制相關(guān)聯(lián)時(shí),才被稱為作業(yè)。

    在大多數(shù)情況下,用戶在同一時(shí)間只運(yùn)行一個(gè)作業(yè),即它們最后向shell鍵入的命令。但是使用作業(yè)控制,用戶可以同時(shí)運(yùn)行多個(gè)作業(yè),并在需要時(shí)在這些作業(yè)間進(jìn)行切換。這會(huì)有什么用途呢?例如,當(dāng)用戶編輯一個(gè)文本文件,并需要中止編輯做其他事情時(shí),利用作業(yè)控制,用戶可以讓編輯器暫時(shí)掛起,返回shell提示符開始做其他的事情。其他事情鉆以后,用戶可以重新啟動(dòng)掛起的編輯器,返回到剛才中止的地方,就象用戶從來沒有離開編輯器一樣。這只是一個(gè)例子,作業(yè)控制還有許多其他實(shí)際的用途。

    啟動(dòng)進(jìn)程

    鍵入需要運(yùn)行的程序的程序名,執(zhí)行一個(gè)程序,其實(shí)也就是啟動(dòng)了一個(gè)進(jìn)程。在Linux系統(tǒng)中每個(gè)進(jìn)程都具有一個(gè)進(jìn)程號(hào),用于系統(tǒng)識(shí)別和調(diào)度進(jìn)程。啟動(dòng)一個(gè)進(jìn)程有兩個(gè)主要途徑:手工啟動(dòng)和調(diào)度啟動(dòng),后者是事先進(jìn)行設(shè)置,根據(jù)用戶要求自行啟動(dòng)。

    手工啟動(dòng)

    由用戶輸入命令,直接啟動(dòng)一個(gè)進(jìn)程便是手工啟動(dòng)進(jìn)程。但手工啟動(dòng)進(jìn)程又可以分為很多種,根據(jù)啟動(dòng)的進(jìn)程類型不同、性質(zhì)不同,實(shí)際結(jié)果也不一樣,下面分別介紹。

    1. 前臺(tái)啟動(dòng)

    這或許是手工啟動(dòng)一個(gè)進(jìn)程的最常用的方式。一般地,用戶鍵入一個(gè)命令“l(fā)s ?l”,這就已經(jīng)啟動(dòng)了一個(gè)進(jìn)程,而且是一個(gè)前臺(tái)的進(jìn)程。這時(shí)候系統(tǒng)其實(shí)已經(jīng)處于一個(gè)多進(jìn)程狀態(tài)?;蛟S有些用戶會(huì)疑惑:我只啟動(dòng)了一個(gè)進(jìn)程而已。但實(shí)際上有許多運(yùn)行在后臺(tái)的、系統(tǒng)啟動(dòng)時(shí)就已經(jīng)自動(dòng)啟動(dòng)的進(jìn)程正在悄悄運(yùn)行著。還有的用戶在鍵入“l(fā)s ?l”命令以后趕緊使用“ps ?x”查看,卻沒有看到ls進(jìn)程,也覺得很奇怪。其實(shí)這是因?yàn)閘s這個(gè)進(jìn)程結(jié)束太快,使用ps查看時(shí)該進(jìn)程已經(jīng)執(zhí)行結(jié)束了。如果啟動(dòng)一個(gè)比較耗時(shí)的進(jìn)程:

    find / -name fox.jpg

    然后再把該進(jìn)程掛起,使用ps查看,就會(huì)看到一個(gè)find進(jìn)程在里面。

     

     

    2. 后臺(tái)啟動(dòng)

    直接從后臺(tái)手工啟動(dòng)一個(gè)進(jìn)程用得比較少一些,除非是該進(jìn)程甚為耗時(shí),且用戶也不急著需要結(jié)果的時(shí)候。假設(shè)用戶要啟動(dòng)一個(gè)需要長時(shí)間運(yùn)行的格式化文本文件的進(jìn)程。為了不使整個(gè)shell在格式化過程中都處于“癱瘓”狀態(tài),從后臺(tái)啟動(dòng)這個(gè)進(jìn)程是明智的選擇。

    [例1]

    $ troff ?me notes > note_form &

    [1] 4513

    $

    由上例可見,從后臺(tái)啟動(dòng)進(jìn)程其實(shí)就是在命令結(jié)尾加上一個(gè)&號(hào)。鍵入命令以后,出現(xiàn)一個(gè)數(shù)字,這個(gè)數(shù)字就是該進(jìn)程的編號(hào),也稱為PID,然后就出現(xiàn)了提示符。用戶可以繼續(xù)其他工作。

    上面介紹了前、后臺(tái)啟動(dòng)的兩種情況。實(shí)際上這兩種啟動(dòng)方式有個(gè)共同的特點(diǎn),就是新進(jìn)程都是由當(dāng)前shell這個(gè)進(jìn)程產(chǎn)生的。也就是說,是shell創(chuàng)建了新進(jìn)程,于是就稱這種關(guān)系為進(jìn)程間的父子關(guān)系。這里shell是父進(jìn)程,而新進(jìn)程是子進(jìn)程。一個(gè)父進(jìn)程可以有多個(gè)子進(jìn)程,一般地,子進(jìn)程結(jié)束后才能繼續(xù)父進(jìn)程;當(dāng)然如果是從后臺(tái)啟動(dòng),那就不用等待子進(jìn)程結(jié)束了。

    一種比較特殊的情況是在使用管道符的時(shí)候。例如:

    nroff -man ps.1|grep kill|more

    這時(shí)候?qū)嶋H上是同時(shí)啟動(dòng)了三個(gè)進(jìn)程。請(qǐng)注意是同時(shí)啟動(dòng)的,所有放在管道兩邊的進(jìn)程都將被同時(shí)啟動(dòng),它們都是當(dāng)前shell的子程序,互相之間可以稱為兄弟進(jìn)程。

    以上介紹的是手工啟動(dòng)進(jìn)程的一些內(nèi)容,作為一名系統(tǒng)管理員,很多時(shí)候都需要把事情安排好以后讓其自動(dòng)運(yùn)行。因?yàn)楣芾韱T不是機(jī)器,也有離開的時(shí)候,所以有些必須要做的工作而恰好管理員不能親自作,這時(shí)候就需要使用調(diào)度啟動(dòng)進(jìn)程了。

    調(diào)度啟動(dòng)

    有時(shí)候需要對(duì)系統(tǒng)進(jìn)行一些比較費(fèi)時(shí)而且占用資源的維護(hù)工作,這些工作適合在深夜進(jìn)行,這時(shí)候用戶就可以事先進(jìn)行調(diào)度安排,指定任務(wù)運(yùn)行的時(shí)間或者場(chǎng)合,到時(shí)候系統(tǒng)會(huì)自動(dòng)完成這一切工作。

    要使用自動(dòng)啟動(dòng)進(jìn)程的功能,就需要掌握以下幾個(gè)啟動(dòng)命令。

    相關(guān)文章
    本頁查看次數(shù):