歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Linux進程管理

  Linux是一個多用戶多任務的操作系統。多用戶是指多個用戶可以在同一時間使用計算機系統;多任務是指Linux可以同時執行幾個任務,它可以在還未執行完一個任務時又執行另一項任務。    操作系統管理多個用戶的請求和多個任務。大多數系統都只有一個CPU和一個主存,但一個系統可能有多個二級存儲磁盤和多個輸入/輸出設備。操作系統管理這些資源並在多個用戶間共享資源,當您提出一個請求時,給您造成一種假象,好象系統只被您獨自占用。而實際上操作系統監控著一個等待執行的任務隊列,這些任務包括用戶作業、操作系統任務、郵件和打印作業等。操作系統根據每個任務的優先級為每個任務分配合適的時間片,每個時間片大約都有零點幾秒,雖然看起來很短,但實際上已經足夠計算機完成成千上萬的指令集。每個任務都會被系統運行一段時間,然後掛起,系統轉而處理其他任務;過一段時間以後再回來處理這個任務,直到某個任務完成,從任務隊列中去除。 一,進程及作業    Linux系統上所有運行的東西都可以稱之為一個進程。每個用戶任務、每個系統管理守護進程,都可以稱之為進程。Linux用分時管理方法使所有的任務共同分享系統資源。我們所關心的是如何去控制這些進程,讓它們能夠很好地為用戶服務。    進程的一個比較正式的定義是∶在自身的虛擬地址空間運行的一個單獨的程序。進程與程序是有區別的,進程不是程序,雖然它由程序產生。程序只是一個靜態的指令集合,不占系統的運行資源;而進程是一個隨時都可能發生變化的、動態的、使用系統運行資源的程序。而且一個程序 可以啟動多個進程。    進程和作業的概念也有區別。一個正在執行的進程稱為一個作業,而且作業可以包含一個或多個進程,尤其是當使用了管道和重定向命令。    作業控制指的是控制正在運行的進程的行為。比如,用戶可以掛起一個進程,等一會兒再繼續執行該進程。shell將記錄所有啟動的進程情況,在每個進程過程中,用戶可以任意地掛起進程或重新啟動進程。作業控制是許多shell(包括bash和tcsh)的一個特性,使用戶能在多個獨立 作業間進行切換。    例如,當用戶編輯一個文本文件,並需要中止編輯做其他事情時,利用作業控制,用戶可以讓編輯器暫時掛起,返回shell提示符開始做其他的事情。其他事情做完以後,用戶可以重新啟動掛起的編輯器,返回到剛才中止的地方,就象用戶從來沒有離開編輯器一樣。這只是一個例子,作業控制還有許多其他實際的用途。 二,啟動進程    鍵入需要運行的程序的程序名,執行一個程序,其實也就是啟動了一個進程。在Linux系統中每個進程都具有一個進程號,用於系統識別和調度進程。啟動一個進程有兩個主要途徑∶手工啟動和調度啟動,後者是事先進行設置,根據用戶要求自行啟動。 1,手工啟動    由用戶輸入命令,直接啟動一個進程便是手工啟動進程。但手工啟動進程又可以分為前台啟動和後台啟動。    前台啟動是手工啟動一個進程的最常用的方式。一般地,用戶鍵入一個命令“ls -l”,這就已經啟動了一個進程,而且是一個前台的進程。這時候系統其實已經處於一個多進程狀態。或許有些用戶會疑惑∶我只啟動了一個進程而已。但實際上有許多運行在後台的、系統啟動時就已經自動啟動的進程正在悄悄運行著。還有的用戶在鍵入“ls -l”命令以後趕緊使用 “ps -x”查看,卻沒有看到ls進程,也覺得很奇怪。其實這是因為ls這個進程結束太快,使用ps查看時該進程已經執行結束了。    直接從後台手工啟動一個進程用得比較少一些,除非是該進程甚為耗時,且用戶也不急著需要結果的時候。假設用戶要啟動一個需要長時間運行的格式化文本文件的進程。為了不使整個shell在格式化過程中都處於“癱瘓”狀態,從後台啟動這個進程是明智的選擇。 2,調度啟動    有時候需要對系統進行一些比較費時而且占用資源的維護工作,這些工作適合在深夜進行,這時候用戶就可以事先進行調度安排,指定任務運行的時間或者場合,到時候系統會自動完成這一切工作。要使用自動啟動進程的功能,就需要掌握以下幾個啟動命令。 第一個重要的命令是at命令    用戶使用at命令在指定時刻執行指定的命令序列。也就是說,該命令至少需要指定一個命令、一個執行時間才可以正常運行。at命令可以只指定時間,也可以時間和日期一起指定。需要注意的是,指定時間有個系統判別問題。比如說∶用戶現在指定了一個執行時間∶凌晨3:20,而發出at命令的時間是頭天晚上的20:00,那麼究竟是在哪一天執行該命令呢?如果用戶在3:20以前仍然在工作,那麼該命令將在這個時候完成;如果用戶3:20以前就退出了工作狀態,那麼該命令將在第二天凌晨才得到執行。下面是at命令的語法格式∶    at [-V] [-q 隊列] [-f 文件名] [-mldbv] 時間    at -c 作業 [作業...]    at允許使用一套相當復雜的指定時間的方法,它可以接受在當天的 hh:mm(小時:分鐘)式的時間指定。如果該時間已經過去,那麼就放在第二天執行。當然也可以使用 midnight(深夜), noon (中午), teatime(飲茶 時間,一般是下午 4點)等比較模糊的詞語來指定時間。用戶還可以采用12小時計時 制,即在時間後面加上AM (上午)或者 PM (下午)來說明是上午還是下午。也可以指定命令執行的具體日期,指定格式為 month day (月 日)或者 mm/dd/yy(月/日/年)或者 dd.mm.yy (日.月.年)。指定的日期必須跟在指定時間的後面。


   上面介紹的都是絕對計時法,其實還可以使用相對計時法,這對於安排不久就要執行的命令是很有好處的。指定格式為∶now + count time-units ,now就是當前時間,time-units是時間單位,這裡可以是 minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數量,究竟是幾天,還是幾小時,等等。    還有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。下面通過一些例子來說明具體用法。    [例] 指定在今天下午 5:30 執行某命令。假設現在時間是中午12:30,2001年2月24日,其命令格式如下∶    at 5:30pm    at 17:30    at 17:30 today    at now + 5 hours    at now + 300 minutes    at 17:30 24.2.99    at 17:30 2/24/99    at 17:30 Feb 24    以上這些命令表達的意義是完全一樣的,所以在安排時間的時候完全可以根據個人喜好和具體情況自由選擇。一般采用絕對時間的24小時計時法可以避免由於用戶自己的疏忽造成計時錯誤的情況發生,例如上例可以寫成∶    at 17:30 2/24/99    這樣非常清楚,而且別人也看得懂。    對於at命令來說,需要定時執行的命令是從標准輸入或者使用-f選項指定的文件中讀取並執行的。如果at命令是從一個使用su命令切換到用戶shell中執行的,那麼當前用戶被認為是執行用戶,所有的錯誤和輸出結果都會送給這個用戶。但是如果有郵件送出的話,收到郵件的將是原來的用戶,也就是登錄時shell的所有者。在7月31日上午10點執行文件work中的作業。    在任何情況下,超級用戶都可以使用這個命令。對於其他用戶來說,是否可以使用就取決於兩個文件∶ /etc/at.allow 和 /etc/at.deny 。 cron命令    前面介紹的兩條命令都會在一定時間內完成一定任務,但是要注意它們都只能 執行一次。也就是說,當指定了運行命令後,系統在指定時間完成任務,一切就結束了。但是在很多時候需要不斷重復一些命令,比如∶某公司每周一自動向員工報告頭一周公司的活動情況,這時候就需要使用cron命令來完成任務了。實際上,cron命令是不應該手工啟動的。cron命令在系統啟動時就由一個shell腳本自動啟動,進入後台(所以不需要使用&符號)。一般的用戶沒有運行該命令的權限,雖然超級用戶可以手工啟動cron,不過還是建議將其放到shell腳本中由系統自行啟動。    首先cron命令會搜索/var/spool/cron目錄,尋找以/etc/passwd文件中 的用戶名命名的crontab文件,被找到的這種文件將載入內存。例如一個用戶名為foxy的用戶,它所對應的crontab文件就應該是/var/spool/cron/foxy。也就是說,以該用戶命名的crontab文件存放在/var/spool/cron目錄下面。cron命令還將搜索/etc/crontab文件,這個文件是用不同的格式寫成的。cron啟動以後,它將首先檢查是否有用戶設置了crontab文件,如果沒有就轉入“休眠”狀態,釋放系統資源。所以該後台進程占用資源極少。它每分鐘“醒”過來一次,查看當前是否有需要運行的命令。命令執行結束後,任何輸出都將作為郵件發送給crontab的所有者,或者是/etc/crontab文件中MAILTO環境變量中指定的用戶。上面簡單介紹了一些cron的工作原理,但是cron命令的執行不需要用戶干涉;需要用戶修改的是crontab中要執行的命令序列,所以下面介紹crontab命令。 crontab命令    crontab命令用於安裝、刪除或者列出用於驅動cron後台進程的表格。也就是 說,用戶把需要執行的命令序列放到crontab文件中以獲得執行。每個用戶都可以有自己的crontab文件。下面就來看看如何創建一個crontab文件。在/var/spool/cron下的crontab文件不可以直接創建或者直接修改。crontab文件是通過crontab命令得到的。現在假設有個用戶名為foxy,需要創建自己的一個crontab文件。



crontab命令    crontab命令用於安裝、刪除或者列出用於驅動cron後台進程的表格。也就是 說,用戶把需要執行的命令序列放到crontab文件中以獲得執行。每個用戶都可以有自己的crontab文件。下面就來看看如何創建一個crontab文件。在/var/spool/cron下的crontab文件不可以直接創建或者直接修改。crontab文件是通過crontab命令得到的。現在假設有個用戶名為foxy,需要創建自己的一個crontab文件。



Copyright © Linux教程網 All Rights Reserved