新聞中心
在Linux操作系統(tǒng)中,進(jìn)程是相互獨(dú)立的執(zhí)行實(shí)體。在實(shí)際應(yīng)用中,進(jìn)程的執(zhí)行模式對于系統(tǒng)性能和資源利用率等方面有著重要的影響。本文將,涵蓋進(jìn)程創(chuàng)建、進(jìn)程調(diào)度、進(jìn)程通信以及進(jìn)程退出等方面。

一、進(jìn)程創(chuàng)建
在Linux系統(tǒng)中,進(jìn)程創(chuàng)建是由fork()函數(shù)實(shí)現(xiàn)的。該函數(shù)會在父進(jìn)程中創(chuàng)建一個與原進(jìn)程相似的子進(jìn)程,并在子進(jìn)程和父進(jìn)程創(chuàng)建出來后讓兩者同時運(yùn)行。下面是fork()函數(shù)的調(diào)用格式:
pid_t fork(void);
fork()函數(shù)的返回值為兩個不同的整數(shù)。在父進(jìn)程中,該返回值為子進(jìn)程的PID(進(jìn)程標(biāo)識符),而在子進(jìn)程中,該返回值為0。進(jìn)程的創(chuàng)建意味著進(jìn)程擁有了一份獨(dú)立的系統(tǒng)資源,包括CPU時間、內(nèi)存空間、文件句柄等。
二、進(jìn)程調(diào)度
在Linux中,進(jìn)程的調(diào)度是操作系統(tǒng)根據(jù)一定的規(guī)則將CPU時間分配給各個進(jìn)程的過程。由于Linux系統(tǒng)是支持多任務(wù)的操作系統(tǒng),因此進(jìn)程調(diào)度是系統(tǒng)中最基本的任務(wù)之一。Linux的進(jìn)程調(diào)度器采取了時間片輪轉(zhuǎn)的方式進(jìn)行調(diào)度,即每個進(jìn)程被分配一個時間片,當(dāng)時間片用完后就會被放回等待隊(duì)列中,等待下一輪調(diào)度執(zhí)行。系統(tǒng)中的進(jìn)程根據(jù)優(yōu)先級不同,獲得的時間片也是不同的。在Linux中,進(jìn)程的優(yōu)先級是由nice值來決定的,nice值越小,進(jìn)程的優(yōu)先級越高。
除此之外,Linux系統(tǒng)還引入了多種調(diào)度算法,如完全公平調(diào)度(CFS)算法、實(shí)時調(diào)度(RT)算法等。CFS算法是一種完全公平的調(diào)度算法,它試圖使所有運(yùn)行中的進(jìn)程獲得相同的時間片,實(shí)現(xiàn)公平調(diào)度。而實(shí)時調(diào)度算法則根據(jù)進(jìn)程所需要的實(shí)時性來進(jìn)行優(yōu)先級調(diào)度,優(yōu)化實(shí)時任務(wù)的響應(yīng)時間,提高系統(tǒng)的實(shí)時性能。
三、進(jìn)程通信
在Linux系統(tǒng)中,進(jìn)程之間是通過進(jìn)程通信機(jī)制來進(jìn)行相互溝通和交換信息的。常見的進(jìn)程通信機(jī)制有管道、消息隊(duì)列、共享內(nèi)存和信號量等。其中,管道機(jī)制是最簡單的進(jìn)程通信方式,它是一種單向通信方式,只能在父子進(jìn)程之間建立。消息隊(duì)列是一種先進(jìn)先出的隊(duì)列,同樣有讀寫兩個方向。共享內(nèi)存則允許多個進(jìn)程共享同一塊內(nèi)存區(qū)域。信號量是一種用于進(jìn)程同步的機(jī)制,可以讓進(jìn)程之間互相協(xié)調(diào),避免出現(xiàn)資源競爭的情況。
四、進(jìn)程退出
進(jìn)程退出是指進(jìn)程執(zhí)行完畢后終止的過程。在Linux中,進(jìn)程正常退出的方法是通過調(diào)用exit()函數(shù)實(shí)現(xiàn)的,該函數(shù)一般在mn()函數(shù)執(zhí)行結(jié)束后調(diào)用。進(jìn)程的異常退出則分為兩種情況:一種是進(jìn)程接收到了一個信號而被迫退出,另一種是進(jìn)程執(zhí)行過程中出現(xiàn)了錯誤或者異常情況而被迫退出。
在進(jìn)程退出時,操作系統(tǒng)會在進(jìn)程的PCB中記錄進(jìn)程的狀態(tài)信息,并將該進(jìn)程從進(jìn)程表中刪除,同時釋放該進(jìn)程占用的系統(tǒng)資源。此外,操作系統(tǒng)還會向父進(jìn)程發(fā)送一個SIGCHILD信號,以通知父進(jìn)程子進(jìn)程已經(jīng)終止。
本文介紹了Linux系統(tǒng)中進(jìn)程的基本概念和執(zhí)行模式,包括進(jìn)程的創(chuàng)建、進(jìn)程調(diào)度、進(jìn)程通信以及進(jìn)程退出等方面。了解進(jìn)程的執(zhí)行模式對于理解Linux系統(tǒng)的工作原理和優(yōu)化系統(tǒng)性能有重要作用。在實(shí)際應(yīng)用中,合理地選擇進(jìn)程通信方式和優(yōu)化進(jìn)程調(diào)度算法也可以提高系統(tǒng)的運(yùn)行效率和響應(yīng)能力。
相關(guān)問題拓展閱讀:
- Linux進(jìn)程管理及作業(yè)控制的啟動進(jìn)程
Linux進(jìn)程管理及作業(yè)控制的啟動進(jìn)程
鍵入需要運(yùn)行的程序的程序名,執(zhí)行一個程序,其實(shí)也就是啟動了一個進(jìn)程。在Linux系統(tǒng)中每個進(jìn)程都具有一個進(jìn)程號,用于系統(tǒng)識別和調(diào)度進(jìn)程。啟動一個進(jìn)程有兩個主要途徑:手工啟動和調(diào)度啟動,后者是事先進(jìn)行設(shè)置,根據(jù)用戶要求自行啟動。 由用戶輸入命令,直接啟動一個進(jìn)程便是手工啟動進(jìn)程。但手工啟動進(jìn)程又可以分為很多種,根據(jù)啟動的進(jìn)程類型不同、性質(zhì)不同,實(shí)際結(jié)果也不一樣,下面分別介紹。
1. 前臺啟動
這或許是手工啟動一個進(jìn)程的最常用的方式。一般地,用戶鍵入一個命令“l(fā)s –l”或攜指,這就已經(jīng)啟動了一個進(jìn)程,而且是一個前臺的進(jìn)程。這時候系統(tǒng)其實(shí)已經(jīng)處于一個多進(jìn)程狀態(tài)?;蛟S有些用戶會疑惑:我只啟動了一個進(jìn)程而已。但實(shí)際上有許多運(yùn)行在后臺的、系統(tǒng)啟動時就已經(jīng)自動啟動的進(jìn)程正在悄悄運(yùn)行著。還有的用戶在鍵入“l(fā)s –l”命令以后趕緊使用“ps –x”查看,卻沒有看到ls進(jìn)程,也覺得很奇怪。其實(shí)這是因?yàn)閘s這個進(jìn)程結(jié)束太快,使用ps查看時該進(jìn)程已經(jīng)執(zhí)行結(jié)束了。如果啟動一個比較耗時的進(jìn)程:
find / -name fox.jpg
然后再把該進(jìn)程掛起,使用ps查看,就會看到一個find進(jìn)程在里面。
2. 后臺啟動
直接從后臺手工啟動一個進(jìn)程用得比較少一些,除非是該進(jìn)程甚為耗時,且用戶也不急著需要結(jié)果的時候。假設(shè)用戶要啟動一個需要長時間運(yùn)行的格式化文本文件的進(jìn)程。為了不使整個shell在格式化過程中都處于“癱瘓”狀態(tài),從后臺啟動這個進(jìn)程是明智的選擇。
$ troff –me notes > note_form &
4513
$
由上例可見,從后臺啟動進(jìn)程其實(shí)就是在命令結(jié)尾加上一個&號。鍵入命令以后,出現(xiàn)一個數(shù)字,這個數(shù)字就是該進(jìn)程的編號,也稱為PID,然后就出現(xiàn)了提示符。用戶可以繼續(xù)其他工作。
上面介紹了前、后臺啟動的兩種情況。實(shí)際上這兩種啟動方式有個共同的特點(diǎn),就是新進(jìn)程都是由當(dāng)前shell這個進(jìn)程產(chǎn)生的。也就是說,是shell創(chuàng)建了新進(jìn)程,于是就稱這種關(guān)系為進(jìn)程間的父子關(guān)系。這里shell是父進(jìn)程,而新進(jìn)程是子進(jìn)程。一個父進(jìn)程可以有多個子進(jìn)程,一般地,子進(jìn)程結(jié)束后才能繼續(xù)父進(jìn)程;當(dāng)然如果是從后臺啟動,那就不用等待子進(jìn)程結(jié)束了。
一種比較特殊的情況是在使用管道符的時候。例如:
nroff -man ps.1|grep kill|more
這時候?qū)嶋H上是同時啟動了三個進(jìn)程。請注意是同時啟動的,所有放在管道兩邊的進(jìn)程都將被同時啟動,它們都是當(dāng)前shell的子程序,互相之間可以稱為兄弟進(jìn)程。
以上介紹的是手工啟動進(jìn)程的一些內(nèi)容,作為一名系統(tǒng)管理員,很多時候都需要把事情安排好以后讓其自動運(yùn)行。因?yàn)楣芾韱T不是機(jī)器,也有離開的時候,所以有些必須要做的工作而恰好管理員不能親自操作,這時候就需要使用調(diào)度啟動進(jìn)程了。 有時候需要對系統(tǒng)進(jìn)行一些比較費(fèi)時而且占用資源的維護(hù)工作,這些工作適合在深夜進(jìn)行,這時候用戶就可以事先進(jìn)行調(diào)度安排,指定任務(wù)運(yùn)行的時間或者場合,到時候系統(tǒng)會自動完成這一切工作。
要使用自動啟動進(jìn)程的功能,就需要掌握以下幾個啟動命令。
at命令
用戶使用at命令在指定時刻執(zhí)行指定的命令序列。也就是說,該命令至少需要指定一個命令、一個執(zhí)行時間才可以正常運(yùn)行。at命令可以只指定時間,也可以時間和日期一起指定。需要注意的是,指定時間有個系統(tǒng)判別問題。比如說:用戶現(xiàn)在指定了一個執(zhí)行時間:凌晨3:20,而發(fā)出at命令的時間是頭天晚上的20:00,那么究竟是在哪一天執(zhí)行該命令呢?如果用戶在3:20以前仍然在工作,那么該命令將在這個時候完成;如果用戶3:20以前就退出了工作狀態(tài),那么該命令將在第二天凌晨才得到執(zhí)行。下面是at命令的語法格式:
at 時間
at -c 作業(yè)
at允許使用一套相當(dāng)復(fù)雜的指定時間的方法,實(shí)際上是將POSIX.2標(biāo)準(zhǔn)擴(kuò)展了。它可以接受在當(dāng)天的hh:mm(小時:分鐘)式的時間指定。如果該時間已經(jīng)過去,那么就放在第二天執(zhí)行。當(dāng)然也可以使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點(diǎn))等比較模衫配糊的詞語來指定時間。用戶還可以采用12小時計(jì)時制,即在時間后面加上AM(上午)或者PM(下午)來說明是上午還是下午。
也可以指定命令執(zhí)行的具體隱和日期,指定格式為month day(月 日)或者mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的后面。
上面介紹的都是絕對計(jì)時法,其實(shí)還可以使用相對計(jì)時法,這對于安排不久就要執(zhí)行的命令是很有好處的。指定格式為:now + count time-units ,now就是當(dāng)前時間,time-units是時間單位,這里可以是 minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數(shù)量,究竟是幾天,還是幾小時,等等。
還有一種計(jì)時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。下面通過一些例子來說明具體用法。
指定在今天下午5:30執(zhí)行某命令。假設(shè)現(xiàn)在時間是中午12:30,1999年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
以上這些命令表達(dá)的意義是完全一樣的,所以在安排時間的時候完全可以根據(jù)個人喜好和具體情況自由選擇。一般采用絕對時間的24小時計(jì)時法可以避免由于用戶自己的疏忽造成計(jì)時錯誤的情況發(fā)生,例如上例可以寫成:
at 17:30 2/24/99
這樣非常清楚,而且別人也看得懂。
對于at命令來說,需要定時執(zhí)行的命令是從標(biāo)準(zhǔn)輸入或者使用-f選項(xiàng)指定的文件中讀取并執(zhí)行的。如果at命令是從一個使用su命令切換到用戶shell中執(zhí)行的,那么當(dāng)前用戶被認(rèn)為是執(zhí)行用戶,所有的錯誤和輸出結(jié)果都會送給這個用戶。但是如果有郵件送出的話,收到郵件的將是原來的用戶,也就是登錄時shell的所有者。
$ at -f work 4pm + 3 days
在三天后下午4點(diǎn)執(zhí)行文件work中的作業(yè)。
$ at -f work 10am Jul 31
在7月31日上午10點(diǎn)執(zhí)行文件work中的作業(yè)。
在任何情況下,超級用戶都可以使用這個命令。對于其他用戶來說,是否可以使用就取決于兩個文件:/etc/at.allow和/etc/at.deny。如果/etc/at.allow文件存在的話,那么只有在其中列出的用戶才可以使用at命令;如果該文件不存在,那么將檢查/etc/at.deny文件是否存在,在這個文件中列出的用戶均不能使用該命令。如果兩個文件都不存在,那么只有超級用戶可以使用該命令;空的/etc/at.deny文件意味著所有的用戶都可以使用該命令,這也是默認(rèn)狀態(tài)。
下面對命令中的參數(shù)進(jìn)行說明。
-V 將標(biāo)準(zhǔn)版本號打印到標(biāo)準(zhǔn)錯誤中。
-q queue 使用指定的隊(duì)列。隊(duì)列名稱是由單個字母組成,合法的隊(duì)列名可以由a-z或者A-Z。a隊(duì)列是at命令的默認(rèn)隊(duì)列。
-m 作業(yè)結(jié)束后發(fā)送郵件給執(zhí)行at命令的用戶。
-f file 使用該選項(xiàng)將使命令從指定的file讀取,而不是從標(biāo)準(zhǔn)輸入讀取。
-l atq命令的一個別名。該命令用于查看安排的作業(yè)序列,它將列出用戶排在隊(duì)列中的作業(yè),如果是超級用戶,則列出隊(duì)列中的所有工作。
命令的語法格式如下:
atq
-d atrm 命令的一個別名。該命令用于刪除指定要執(zhí)行的命令序列,語法格式如下:
atrm 作業(yè)
-c 將命令行上所列的作業(yè)送到標(biāo)準(zhǔn)輸出。
找出系統(tǒng)中所有以txt為后綴名的文件,并且進(jìn)行打印。打印結(jié)束后給用戶foxy發(fā)出郵件通知取件。指定時間為十二月二十五日凌晨兩點(diǎn)。
首先鍵入:
$ at 2:00 12/25/99
然后系統(tǒng)出現(xiàn)at>提示符,等待用戶輸入進(jìn)一步的信息,也就是需要執(zhí)行的命令序列:
at> find / -name “*.txt”|lpr
at> echo “foxy:All texts have been printed.You can take them over.Good day!River” |mail -s ”job done” foxy
輸入完每一行指令然后回車,所有指令序列輸入完畢后,使用組合鍵結(jié)束at命令的輸入。這時候屏幕將出現(xiàn)如下信息:
warning:command will be executed using /bin/sh.
job 1 at:00
提醒用戶將使用哪個shell來執(zhí)行該命令序列。 實(shí)際上如果命令序列較長或者經(jīng)常被執(zhí)行的時候,一般都采用將該序列寫到一個文件中,然后將文件作為at命令的輸入來處理。這樣不容易出錯。
例5> 上面的例子可以修改如下:
將命令序列寫入到文件/tmp/printjob,語句為:
$ at -f /tmp/printjob 2:00 12/25/99
這樣一來,at命令將使用文件中的命令序列,屏幕顯示如下:
Warning:command will be executed using /bin/sh.
job 2 at:00
當(dāng)然也可以采用以下命令:
$ at find / -name *.txt|lpr
at> echo “foxy:All texts have been printed.You can take them over.Good day!River” |mail -s ”job done” foxy
現(xiàn)在這個命令就會在合適的時間進(jìn)行了,進(jìn)行完后會發(fā)回一個信息。
仍然使用組合鍵來結(jié)束命令輸入。而且batch和at命令都將自動轉(zhuǎn)入后臺,所以啟動的時候也不需要加上&符號。
cron命令
前面介紹的兩條命令都會在一定時間內(nèi)完成一定任務(wù),但是要注意它們都只能執(zhí)行一次。也就是說,當(dāng)指定了運(yùn)行命令后,系統(tǒng)在指定時間完成任務(wù),一切就結(jié)束了。但是在很多時候需要不斷重復(fù)一些命令,比如:某公司每周一自動向員工報(bào)告頭一周公司的活動情況,這時候就需要使用cron命令來完成任務(wù)了。
實(shí)際上,cron命令是不應(yīng)該手工啟動的。cron命令在系統(tǒng)啟動時就由一個shell腳本自動啟動,進(jìn)入后臺(所以不需要使用&符號)。一般的用戶沒有運(yùn)行該命令的權(quán)限,雖然超級用戶可以手工啟動cron,不過還是建議將其放到shell腳本中由系統(tǒng)自行啟動。
首先cron命令會搜索/var/spool/cron目錄,尋找以/etc/passwd文件中的用戶名命名的crontab文件,被找到的這種文件將載入內(nèi)存。例如一個用戶名為foxy的用戶,它所對應(yīng)的crontab文件就應(yīng)該是/var/spool/cron/foxy。也就是說,以該用戶命名的crontab文件存放在/var/spool/cron目錄下面。cron命令還將搜索/etc/crontab文件,這個文件是用不同的格式寫成的。
cron啟動以后,它將首先檢查是否有用戶設(shè)置了crontab文件,如果沒有就轉(zhuǎn)入“休眠”狀態(tài),釋放系統(tǒng)資源。所以該后臺進(jìn)程占用資源極少。它每分鐘“醒”過來一次,查看當(dāng)前是否有需要運(yùn)行的命令。命令執(zhí)行結(jié)束后,任何輸出都將作為郵件發(fā)送給crontab的所有者,或者是/etc/crontab文件中MAILTO環(huán)境變量中指定的用戶。
上面簡單介紹了一些cron的工作原理,但是cron命令的執(zhí)行不需要用戶干涉;需要用戶修改的是crontab中要執(zhí)行的命令序列,所以下面介紹crontab命令。
crontab命令
crontab命令用于安裝、刪除或者列出用于驅(qū)動cron后臺進(jìn)程的表格。也就是說,用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行。每個用戶都可以有自己的crontab文件。下面就來看看如何創(chuàng)建一個crontab文件。
在/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。crontab文件是通過crontab命令得到的?,F(xiàn)在假設(shè)有個用戶名為foxy,需要創(chuàng)建自己的一個crontab文件。首先可以使用任何文本編輯器建立一個新文件,然后向其中寫入需要運(yùn)行的命令和要定期執(zhí)行的時間。
然后存盤退出。假設(shè)該文件為/tmp/test.cron。再后就是使用crontab命令來安裝這個文件,使之成為該用戶的crontab文件。鍵入:
crontab test.cron
這樣一個crontab 文件就建立好了??梢赞D(zhuǎn)到/var/spool/cron目錄下面查看,發(fā)現(xiàn)多了一個foxy文件。這個文件就是所需的crontab 文件。用more命令查看該文件的內(nèi)容可以發(fā)現(xiàn)文件頭有三行信息:
#DO NOT EDIT THIS FILE -edit the master and reinstall.
#(test.cron installed on Mon Feb 22 14:20:)
#(cron version –$Id:crontab.c,v 2./01/17 03:20:37 vivie Exp $)
大概意思是:
#切勿編輯此文件——如果需要改變請編輯源文件然后重新安裝。
#test.cron文件安裝時間:14:20:20 02/22/1999
如果需要改變其中的命令內(nèi)容時,還是需要重新編輯原來的文件,然后再使用crontab命令安裝。
可以使用crontab命令的用戶是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用戶才能使用該命令;如果該文件不存在但cron.deny文件存在,那么只有未列在該文件中的用戶才能使用crontab命令;如果兩個文件都不存在,那就取決于一些參數(shù)的設(shè)置,可能是只允許超級用戶使用該命令,也可能是所有用戶都可以使用該命令。
crontab命令的語法格式如下:
crontab file
crontab {-l|-r|-e}
之一種格式用于安裝一個新的crontab 文件,安裝來源就是file所指的文件,如果使用“-”符號作為文件名,那就意味著使用標(biāo)準(zhǔn)輸入作為安裝來源。
-u 如果使用該選項(xiàng),也就是指定了是哪個具體用戶的crontab 文件將被修改。如果不指定該選項(xiàng),crontab 將默認(rèn)是操作者本人的crontab ,也就是執(zhí)行該crontab 命令的用戶的crontab 文件將被修改。但是請注意,如果使用了su命令再使用crontab 命令很可能就會出現(xiàn)混亂的情況。所以如果是使用了su命令,更好使用-u選項(xiàng)來指定究竟是哪個用戶的crontab文件。
-l 在標(biāo)準(zhǔn)輸出上顯示當(dāng)前的crontab。
-r 刪除當(dāng)前的crontab文件。
-e 使用VISUAL或者EDITOR環(huán)境變量所指的編輯器編輯當(dāng)前的crontab文件。當(dāng)結(jié)束編輯離開時,編輯后的文件將自動安裝。
# crontab -l #列出用戶目前的crontab。
10 6 * * * date
0 */2 * * * date
0 23-7/2,8 * * * date
#
在crontab文件中如何輸入需要執(zhí)行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執(zhí)行的時間,最后一個域是要被執(zhí)行的命令。每個域之間使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
之一項(xiàng)是分鐘,第二項(xiàng)是小時,第三項(xiàng)是一個月的第幾天,第四項(xiàng)是一年的第幾個月,第五項(xiàng)是一周的星期幾,第六項(xiàng)是要執(zhí)行的命令。這些項(xiàng)都不能為空,必須填入。如果用戶不需要指定其中的幾項(xiàng),那么可以使用*代替。因?yàn)?是統(tǒng)配符,可以代替任何字符,所以就可以認(rèn)為是任何時間,也就是該項(xiàng)被忽略了。在表4-1中給出了每項(xiàng)的合法范圍。
表4-1 指定時間的合法范圍
時間
合法值
minute 00-59
hour 00-23,其中00點(diǎn)就是晚上12點(diǎn)
day-of-month
01-31
month-of-year
01-12
day-of-week
0-6,其中周日是0
這樣用戶就可以往crontab 文件中寫入無限多的行以完成無限多的命令。命令域中可以寫入所有可以在命令行寫入的命令和符號,其他所有時間域都支持列舉,也就是域中可以寫入很多的時間值,只要滿足這些時間值中的任何一個都執(zhí)行命令,每兩個時間值中間使用逗號分隔。
5,15,25,35,45,55 16,17,18 * * * command
這就是表示任意天任意月,其實(shí)就是每天的下午4點(diǎn)、5點(diǎn)、6點(diǎn)的5 min、15 min、25 min、35 min、45 min、55 min時執(zhí)行命令。
在每周一,三,五的下午3:00系統(tǒng)進(jìn)入維護(hù)狀態(tài),重新啟動系統(tǒng)。那么在crontab 文件中就應(yīng)該寫入如下字段:
00 15 * * 1,3,5 shutdown -r +5
然后將該文件存盤為foxy.cron,再鍵入crontab foxy.cron安裝該文件。
每小時的10分,40分執(zhí)行用戶目錄下的innd/bbslin這個指令:
10,40 * * * * innd/bbslink
每小時的1分執(zhí)行用戶目錄下的bin/account這個指令:
1 * * * * bin/account
每天早晨三點(diǎn)二十分執(zhí)行用戶目錄下如下所示的兩個指令(每個指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire>expire.1st)
每年的一月和四月,4號到9號的3點(diǎn)12分和3點(diǎn)55分執(zhí)行/bin/rm -f expire.1st這個指令,并把結(jié)果添加在mm.txt這個文件之后(mm.txt文件位于用戶自己的目錄位置)。
12,,4 * /bin/rm -f expire.1st>> m.txt
我們來看一個超級用戶的crontab文件:
#Run the ‘a(chǎn)trun’ program every minutes
#This runs anything that’s due to run from ‘a(chǎn)t’.See man ‘a(chǎn)t’ or ‘a(chǎn)trun’. 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun
40 7 * * * updatedb
8,10,22,30,39,46,54,58 * * * * /bin/sync
進(jìn)程的掛起及恢復(fù)命令bg、fg
作業(yè)控制允許將進(jìn)程掛起并可以在需要時恢復(fù)進(jìn)程的運(yùn)行,被掛起的作業(yè)恢復(fù)后將從中止處開始繼續(xù)運(yùn)行。只要在鍵盤上按,即可掛起當(dāng)前的前臺作業(yè)。
$ cat >
text.file + stopped cat > text.file
$ jobs + stopped cat >text.file
在鍵盤上按后,將掛起當(dāng)前執(zhí)行的命令cat。使用jobs命令可以顯示shell的作業(yè)清單,包括具體的作業(yè)、作業(yè)號以及作業(yè)當(dāng)前所處的狀態(tài)。
恢復(fù)進(jìn)程執(zhí)行時,有兩種選擇:用fg命令將掛起的作業(yè)放回到前臺執(zhí)行;用bg命令將掛起的作業(yè)放到后臺執(zhí)行。
用戶正在使用Emacs,突然需要查看系統(tǒng)進(jìn)程情況。就首先使用組合鍵將Emacs進(jìn)程掛起,然后使用bg命令將其在后臺啟動,這樣就得到了前臺的操作控制權(quán),接著鍵入“ps –x”查看進(jìn)程情況。查看完畢后,使用fg命令將Emacs帶回前臺運(yùn)行即可。其命令格式為:
$ bg emacs
$ ps –x
$ fg emacs
默認(rèn)情況下,fg和bg命令對最近停止的作業(yè)進(jìn)行操作。如果希望恢復(fù)其他作業(yè)的運(yùn)行,可以在命令中指定要恢復(fù)作業(yè)的作業(yè)號來恢復(fù)該作業(yè)。例如:
$ fg 1
cat > text.file
linux進(jìn)程執(zhí)行模式的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux進(jìn)程執(zhí)行模式,深入探究Linux進(jìn)程執(zhí)行模式,Linux進(jìn)程管理及作業(yè)控制的啟動進(jìn)程的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文標(biāo)題:深入探究Linux進(jìn)程執(zhí)行模式(linux進(jìn)程執(zhí)行模式)
URL網(wǎng)址:http://www.5511xx.com/article/cdopdoe.html


咨詢
建站咨詢
