日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入探究Linux進(jìn)程執(zhí)行模式(linux進(jìn)程執(zhí)行模式)

在Linux操作系統(tǒng)中,進(jìn)程是相互獨(dú)立的執(zhí)行實(shí)體。在實(shí)際應(yīng)用中,進(jìn)程的執(zhí)行模式對(duì)于系統(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ù)會(huì)在父進(jìn)程中創(chuàng)建一個(gè)與原進(jìn)程相似的子進(jìn)程,并在子進(jìn)程和父進(jìn)程創(chuàng)建出來(lái)后讓兩者同時(shí)運(yùn)行。下面是fork()函數(shù)的調(diào)用格式:

pid_t fork(void);

fork()函數(shù)的返回值為兩個(gè)不同的整數(shù)。在父進(jìn)程中,該返回值為子進(jìn)程的PID(進(jìn)程標(biāo)識(shí)符),而在子進(jìn)程中,該返回值為0。進(jìn)程的創(chuàng)建意味著進(jìn)程擁有了一份獨(dú)立的系統(tǒng)資源,包括CPU時(shí)間、內(nèi)存空間、文件句柄等。

二、進(jìn)程調(diào)度

在Linux中,進(jìn)程的調(diào)度是操作系統(tǒng)根據(jù)一定的規(guī)則將CPU時(shí)間分配給各個(gè)進(jìn)程的過(guò)程。由于Linux系統(tǒng)是支持多任務(wù)的操作系統(tǒng),因此進(jìn)程調(diào)度是系統(tǒng)中最基本的任務(wù)之一。Linux的進(jìn)程調(diào)度器采取了時(shí)間片輪轉(zhuǎn)的方式進(jìn)行調(diào)度,即每個(gè)進(jìn)程被分配一個(gè)時(shí)間片,當(dāng)時(shí)間片用完后就會(huì)被放回等待隊(duì)列中,等待下一輪調(diào)度執(zhí)行。系統(tǒng)中的進(jìn)程根據(jù)優(yōu)先級(jí)不同,獲得的時(shí)間片也是不同的。在Linux中,進(jìn)程的優(yōu)先級(jí)是由nice值來(lái)決定的,nice值越小,進(jìn)程的優(yōu)先級(jí)越高。

除此之外,Linux系統(tǒng)還引入了多種調(diào)度算法,如完全公平調(diào)度(CFS)算法、實(shí)時(shí)調(diào)度(RT)算法等。CFS算法是一種完全公平的調(diào)度算法,它試圖使所有運(yùn)行中的進(jìn)程獲得相同的時(shí)間片,實(shí)現(xiàn)公平調(diào)度。而實(shí)時(shí)調(diào)度算法則根據(jù)進(jìn)程所需要的實(shí)時(shí)性來(lái)進(jìn)行優(yōu)先級(jí)調(diào)度,優(yōu)化實(shí)時(shí)任務(wù)的響應(yīng)時(shí)間,提高系統(tǒng)的實(shí)時(shí)性能。

三、進(jìn)程通信

在Linux系統(tǒng)中,進(jìn)程之間是通過(guò)進(jìn)程通信機(jī)制來(lái)進(jìn)行相互溝通和交換信息的。常見的進(jìn)程通信機(jī)制有管道、消息隊(duì)列、共享內(nèi)存和信號(hào)量等。其中,管道機(jī)制是最簡(jiǎn)單的進(jìn)程通信方式,它是一種單向通信方式,只能在父子進(jìn)程之間建立。消息隊(duì)列是一種先進(jìn)先出的隊(duì)列,同樣有讀寫兩個(gè)方向。共享內(nèi)存則允許多個(gè)進(jìn)程共享同一塊內(nèi)存區(qū)域。信號(hào)量是一種用于進(jìn)程同步的機(jī)制,可以讓進(jìn)程之間互相協(xié)調(diào),避免出現(xiàn)資源競(jìng)爭(zhēng)的情況。

四、進(jìn)程退出

進(jìn)程退出是指進(jìn)程執(zhí)行完畢后終止的過(guò)程。在Linux中,進(jìn)程正常退出的方法是通過(guò)調(diào)用exit()函數(shù)實(shí)現(xiàn)的,該函數(shù)一般在mn()函數(shù)執(zhí)行結(jié)束后調(diào)用。進(jìn)程的異常退出則分為兩種情況:一種是進(jìn)程接收到了一個(gè)信號(hào)而被迫退出,另一種是進(jìn)程執(zhí)行過(guò)程中出現(xiàn)了錯(cuò)誤或者異常情況而被迫退出。

在進(jìn)程退出時(shí),操作系統(tǒng)會(huì)在進(jìn)程的PCB中記錄進(jìn)程的狀態(tài)信息,并將該進(jìn)程從進(jìn)程表中刪除,同時(shí)釋放該進(jìn)程占用的系統(tǒng)資源。此外,操作系統(tǒng)還會(huì)向父進(jìn)程發(fā)送一個(gè)SIGCHILD信號(hào),以通知父進(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í)行模式對(duì)于理解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)問(wèn)題拓展閱讀:

  • Linux進(jìn)程管理及作業(yè)控制的啟動(dòng)進(jìn)程

Linux進(jìn)程管理及作業(yè)控制的啟動(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)一個(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è)需要長(zhǎng)時(shí)間運(yùn)行的格式化文本文件的進(jìn)程。為了不使整個(gè)shell在格式化過(guò)程中都處于“癱瘓”狀態(tài),從后臺(tái)啟動(dòng)這個(gè)進(jìn)程是明智的選擇。

$ troff –me notes > note_form &

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)生的。也就是說(shuō),是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)程了。 有時(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)命令。

at命令

用戶使用at命令在指定時(shí)刻執(zhí)行指定的命令序列。也就是說(shuō),該命令至少需要指定一個(gè)命令、一個(gè)執(zhí)行時(shí)間才可以正常運(yùn)行。at命令可以只指定時(shí)間,也可以時(shí)間和日期一起指定。需要注意的是,指定時(shí)間有個(gè)系統(tǒng)判別問(wèn)題。比如說(shuō):用戶現(xiàn)在指定了一個(gè)執(zhí)行時(shí)間:凌晨3:20,而發(fā)出at命令的時(shí)間是頭天晚上的20:00,那么究竟是在哪一天執(zhí)行該命令呢?如果用戶在3:20以前仍然在工作,那么該命令將在這個(gè)時(shí)候完成;如果用戶3:20以前就退出了工作狀態(tài),那么該命令將在第二天凌晨才得到執(zhí)行。下面是at命令的語(yǔ)法格式:

at 時(shí)間

at -c 作業(yè)

at允許使用一套相當(dāng)復(fù)雜的指定時(shí)間的方法,實(shí)際上是將POSIX.2標(biāo)準(zhǔn)擴(kuò)展了。它可以接受在當(dāng)天的hh:mm(小時(shí):分鐘)式的時(shí)間指定。如果該時(shí)間已經(jīng)過(guò)去,那么就放在第二天執(zhí)行。當(dāng)然也可以使用midnight(深夜),noon(中午),teatime(飲茶時(shí)間,一般是下午4點(diǎn))等比較模衫配糊的詞語(yǔ)來(lái)指定時(shí)間。用戶還可以采用12小時(shí)計(jì)時(shí)制,即在時(shí)間后面加上AM(上午)或者PM(下午)來(lái)說(shuō)明是上午還是下午。

也可以指定命令執(zhí)行的具體隱和日期,指定格式為month day(月 日)或者mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)。指定的日期必須跟在指定時(shí)間的后面。

上面介紹的都是絕對(duì)計(jì)時(shí)法,其實(shí)還可以使用相對(duì)計(jì)時(shí)法,這對(duì)于安排不久就要執(zhí)行的命令是很有好處的。指定格式為:now + count time-units ,now就是當(dāng)前時(shí)間,time-units是時(shí)間單位,這里可以是 minutes(分鐘)、hours(小時(shí))、days(天)、weeks(星期)。count是時(shí)間的數(shù)量,究竟是幾天,還是幾小時(shí),等等。

還有一種計(jì)時(shí)方法就是直接使用today(今天)、tomorrow(明天)來(lái)指定完成命令的時(shí)間。下面通過(guò)一些例子來(lái)說(shuō)明具體用法。

指定在今天下午5:30執(zhí)行某命令。假設(shè)現(xiàn)在時(shí)間是中午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á)的意義是完全一樣的,所以在安排時(shí)間的時(shí)候完全可以根據(jù)個(gè)人喜好和具體情況自由選擇。一般采用絕對(duì)時(shí)間的24小時(shí)計(jì)時(shí)法可以避免由于用戶自己的疏忽造成計(jì)時(shí)錯(cuò)誤的情況發(fā)生,例如上例可以寫成:

at 17:30 2/24/99

這樣非常清楚,而且別人也看得懂。

對(duì)于at命令來(lái)說(shuō),需要定時(shí)執(zhí)行的命令是從標(biāo)準(zhǔn)輸入或者使用-f選項(xiàng)指定的文件中讀取并執(zhí)行的。如果at命令是從一個(gè)使用su命令切換到用戶shell中執(zhí)行的,那么當(dāng)前用戶被認(rèn)為是執(zhí)行用戶,所有的錯(cuò)誤和輸出結(jié)果都會(huì)送給這個(gè)用戶。但是如果有郵件送出的話,收到郵件的將是原來(lái)的用戶,也就是登錄時(shí)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è)。

在任何情況下,超級(jí)用戶都可以使用這個(gè)命令。對(duì)于其他用戶來(lái)說(shuō),是否可以使用就取決于兩個(gè)文件:/etc/at.allow和/etc/at.deny。如果/etc/at.allow文件存在的話,那么只有在其中列出的用戶才可以使用at命令;如果該文件不存在,那么將檢查/etc/at.deny文件是否存在,在這個(gè)文件中列出的用戶均不能使用該命令。如果兩個(gè)文件都不存在,那么只有超級(jí)用戶可以使用該命令;空的/etc/at.deny文件意味著所有的用戶都可以使用該命令,這也是默認(rèn)狀態(tài)。

下面對(duì)命令中的參數(shù)進(jìn)行說(shuō)明。

-V 將標(biāo)準(zhǔn)版本號(hào)打印到標(biāo)準(zhǔn)錯(cuò)誤中。

-q queue 使用指定的隊(duì)列。隊(duì)列名稱是由單個(gè)字母組成,合法的隊(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命令的一個(gè)別名。該命令用于查看安排的作業(yè)序列,它將列出用戶排在隊(duì)列中的作業(yè),如果是超級(jí)用戶,則列出隊(duì)列中的所有工作。

命令的語(yǔ)法格式如下:

atq

-d atrm 命令的一個(gè)別名。該命令用于刪除指定要執(zhí)行的命令序列,語(yǔ)法格式如下:

atrm 作業(yè)

-c 將命令行上所列的作業(yè)送到標(biāo)準(zhǔn)輸出。

找出系統(tǒng)中所有以txt為后綴名的文件,并且進(jìn)行打印。打印結(jié)束后給用戶foxy發(fā)出郵件通知取件。指定時(shí)間為十二月二十五日凌晨?jī)牲c(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命令的輸入。這時(shí)候屏幕將出現(xiàn)如下信息:

warning:command will be executed using /bin/sh.

job 1 at:00

提醒用戶將使用哪個(gè)shell來(lái)執(zhí)行該命令序列。 實(shí)際上如果命令序列較長(zhǎng)或者經(jīng)常被執(zhí)行的時(shí)候,一般都采用將該序列寫到一個(gè)文件中,然后將文件作為at命令的輸入來(lái)處理。這樣不容易出錯(cuò)。

例5> 上面的例子可以修改如下:

將命令序列寫入到文件/tmp/printjob,語(yǔ)句為:

$ at -f /tmp/printjob 2:00 12/25/99

這樣一來(lái),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)在這個(gè)命令就會(huì)在合適的時(shí)間進(jìn)行了,進(jìn)行完后會(huì)發(fā)回一個(gè)信息。

仍然使用組合鍵來(lái)結(jié)束命令輸入。而且batch和at命令都將自動(dòng)轉(zhuǎn)入后臺(tái),所以啟動(dòng)的時(shí)候也不需要加上&符號(hào)。

cron命令

前面介紹的兩條命令都會(huì)在一定時(shí)間內(nèi)完成一定任務(wù),但是要注意它們都只能執(zhí)行一次。也就是說(shuō),當(dāng)指定了運(yùn)行命令后,系統(tǒng)在指定時(shí)間完成任務(wù),一切就結(jié)束了。但是在很多時(shí)候需要不斷重復(fù)一些命令,比如:某公司每周一自動(dòng)向員工報(bào)告頭一周公司的活動(dòng)情況,這時(shí)候就需要使用cron命令來(lái)完成任務(wù)了。

實(shí)際上,cron命令是不應(yīng)該手工啟動(dòng)的。cron命令在系統(tǒng)啟動(dòng)時(shí)就由一個(gè)shell腳本自動(dòng)啟動(dòng),進(jìn)入后臺(tái)(所以不需要使用&符號(hào))。一般的用戶沒有運(yùn)行該命令的權(quán)限,雖然超級(jí)用戶可以手工啟動(dòng)cron,不過(guò)還是建議將其放到shell腳本中由系統(tǒng)自行啟動(dòng)。

首先cron命令會(huì)搜索/var/spool/cron目錄,尋找以/etc/passwd文件中的用戶名命名的crontab文件,被找到的這種文件將載入內(nèi)存。例如一個(gè)用戶名為foxy的用戶,它所對(duì)應(yīng)的crontab文件就應(yīng)該是/var/spool/cron/foxy。也就是說(shuō),以該用戶命名的crontab文件存放在/var/spool/cron目錄下面。cron命令還將搜索/etc/crontab文件,這個(gè)文件是用不同的格式寫成的。

cron啟動(dòng)以后,它將首先檢查是否有用戶設(shè)置了crontab文件,如果沒有就轉(zhuǎn)入“休眠”狀態(tài),釋放系統(tǒng)資源。所以該后臺(tái)進(jìn)程占用資源極少。它每分鐘“醒”過(guò)來(lái)一次,查看當(dāng)前是否有需要運(yùn)行的命令。命令執(zhí)行結(jié)束后,任何輸出都將作為郵件發(fā)送給crontab的所有者,或者是/etc/crontab文件中MAILTO環(huán)境變量中指定的用戶。

上面簡(jiǎn)單介紹了一些cron的工作原理,但是cron命令的執(zhí)行不需要用戶干涉;需要用戶修改的是crontab中要執(zhí)行的命令序列,所以下面介紹crontab命令。

crontab命令

crontab命令用于安裝、刪除或者列出用于驅(qū)動(dòng)cron后臺(tái)進(jìn)程的表格。也就是說(shuō),用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行。每個(gè)用戶都可以有自己的crontab文件。下面就來(lái)看看如何創(chuàng)建一個(gè)crontab文件。

在/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。crontab文件是通過(guò)crontab命令得到的?,F(xiàn)在假設(shè)有個(gè)用戶名為foxy,需要?jiǎng)?chuàng)建自己的一個(gè)crontab文件。首先可以使用任何文本編輯器建立一個(gè)新文件,然后向其中寫入需要運(yùn)行的命令和要定期執(zhí)行的時(shí)間。

然后存盤退出。假設(shè)該文件為/tmp/test.cron。再后就是使用crontab命令來(lái)安裝這個(gè)文件,使之成為該用戶的crontab文件。鍵入:

crontab test.cron

這樣一個(gè)crontab 文件就建立好了??梢赞D(zhuǎn)到/var/spool/cron目錄下面查看,發(fā)現(xiàn)多了一個(gè)foxy文件。這個(gè)文件就是所需的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 $)

大概意思是:

#切勿編輯此文件——如果需要改變請(qǐng)編輯源文件然后重新安裝。

#test.cron文件安裝時(shí)間:14:20:20 02/22/1999

如果需要改變其中的命令內(nèi)容時(shí),還是需要重新編輯原來(lái)的文件,然后再使用crontab命令安裝。

可以使用crontab命令的用戶是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用戶才能使用該命令;如果該文件不存在但cron.deny文件存在,那么只有未列在該文件中的用戶才能使用crontab命令;如果兩個(gè)文件都不存在,那就取決于一些參數(shù)的設(shè)置,可能是只允許超級(jí)用戶使用該命令,也可能是所有用戶都可以使用該命令。

crontab命令的語(yǔ)法格式如下:

crontab file

crontab {-l|-r|-e}

之一種格式用于安裝一個(gè)新的crontab 文件,安裝來(lái)源就是file所指的文件,如果使用“-”符號(hào)作為文件名,那就意味著使用標(biāo)準(zhǔn)輸入作為安裝來(lái)源。

-u 如果使用該選項(xiàng),也就是指定了是哪個(gè)具體用戶的crontab 文件將被修改。如果不指定該選項(xiàng),crontab 將默認(rèn)是操作者本人的crontab ,也就是執(zhí)行該crontab 命令的用戶的crontab 文件將被修改。但是請(qǐng)注意,如果使用了su命令再使用crontab 命令很可能就會(huì)出現(xiàn)混亂的情況。所以如果是使用了su命令,更好使用-u選項(xiàng)來(lái)指定究竟是哪個(gè)用戶的crontab文件。

-l 在標(biāo)準(zhǔn)輸出上顯示當(dāng)前的crontab。

-r 刪除當(dāng)前的crontab文件。

-e 使用VISUAL或者EDITOR環(huán)境變量所指的編輯器編輯當(dāng)前的crontab文件。當(dāng)結(jié)束編輯離開時(shí),編輯后的文件將自動(dòng)安裝。

# crontab -l #列出用戶目前的crontab。

10 6 * * * date

0 */2 * * * date

0 23-7/2,8 * * * date

#

在crontab文件中如何輸入需要執(zhí)行的命令和時(shí)間。該文件中每行都包括六個(gè)域,其中前五個(gè)域是指定命令被執(zhí)行的時(shí)間,最后一個(gè)域是要被執(zhí)行的命令。每個(gè)域之間使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands

之一項(xiàng)是分鐘,第二項(xiàng)是小時(shí),第三項(xiàng)是一個(gè)月的第幾天,第四項(xiàng)是一年的第幾個(gè)月,第五項(xiàng)是一周的星期幾,第六項(xiàng)是要執(zhí)行的命令。這些項(xiàng)都不能為空,必須填入。如果用戶不需要指定其中的幾項(xiàng),那么可以使用*代替。因?yàn)?是統(tǒng)配符,可以代替任何字符,所以就可以認(rèn)為是任何時(shí)間,也就是該項(xiàng)被忽略了。在表4-1中給出了每項(xiàng)的合法范圍。

表4-1 指定時(shí)間的合法范圍

時(shí)間

合法值

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 文件中寫入無(wú)限多的行以完成無(wú)限多的命令。命令域中可以寫入所有可以在命令行寫入的命令和符號(hào),其他所有時(shí)間域都支持列舉,也就是域中可以寫入很多的時(shí)間值,只要滿足這些時(shí)間值中的任何一個(gè)都執(zhí)行命令,每?jī)蓚€(gè)時(shí)間值中間使用逗號(hào)分隔。

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時(shí)執(zhí)行命令。

在每周一,三,五的下午3:00系統(tǒng)進(jìn)入維護(hù)狀態(tài),重新啟動(dòng)系統(tǒng)。那么在crontab 文件中就應(yīng)該寫入如下字段:

00 15 * * 1,3,5 shutdown -r +5

然后將該文件存盤為foxy.cron,再鍵入crontab foxy.cron安裝該文件。

每小時(shí)的10分,40分執(zhí)行用戶目錄下的innd/bbslin這個(gè)指令:

10,40 * * * * innd/bbslink

每小時(shí)的1分執(zhí)行用戶目錄下的bin/account這個(gè)指令:

1 * * * * bin/account

每天早晨三點(diǎn)二十分執(zhí)行用戶目錄下如下所示的兩個(gè)指令(每個(gè)指令以;分隔):

20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire>expire.1st)

每年的一月和四月,4號(hào)到9號(hào)的3點(diǎn)12分和3點(diǎn)55分執(zhí)行/bin/rm -f expire.1st這個(gè)指令,并把結(jié)果添加在mm.txt這個(gè)文件之后(mm.txt文件位于用戶自己的目錄位置)。

12,,4 * /bin/rm -f expire.1st>> m.txt

我們來(lái)看一個(gè)超級(jí)用戶的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)程掛起并可以在需要時(shí)恢復(fù)進(jìn)程的運(yùn)行,被掛起的作業(yè)恢復(fù)后將從中止處開始繼續(xù)運(yùn)行。只要在鍵盤上按,即可掛起當(dāng)前的前臺(tái)作業(yè)。

$ cat >

text.file + stopped cat > text.file

$ jobs + stopped cat >text.file

在鍵盤上按后,將掛起當(dāng)前執(zhí)行的命令cat。使用jobs命令可以顯示shell的作業(yè)清單,包括具體的作業(yè)、作業(yè)號(hào)以及作業(yè)當(dāng)前所處的狀態(tài)。

恢復(fù)進(jìn)程執(zhí)行時(shí),有兩種選擇:用fg命令將掛起的作業(yè)放回到前臺(tái)執(zhí)行;用bg命令將掛起的作業(yè)放到后臺(tái)執(zhí)行。

用戶正在使用Emacs,突然需要查看系統(tǒng)進(jìn)程情況。就首先使用組合鍵將Emacs進(jìn)程掛起,然后使用bg命令將其在后臺(tái)啟動(dòng),這樣就得到了前臺(tái)的操作控制權(quán),接著鍵入“ps –x”查看進(jìn)程情況。查看完畢后,使用fg命令將Emacs帶回前臺(tái)運(yùn)行即可。其命令格式為:

$ bg emacs

$ ps –x

$ fg emacs

默認(rèn)情況下,fg和bg命令對(duì)最近停止的作業(yè)進(jìn)行操作。如果希望恢復(fù)其他作業(yè)的運(yùn)行,可以在命令中指定要恢復(fù)作業(yè)的作業(yè)號(hào)來(lái)恢復(fù)該作業(yè)。例如:

$ fg 1

cat > text.file

linux進(jìn)程執(zhí)行模式的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux進(jìn)程執(zhí)行模式,深入探究Linux進(jìn)程執(zhí)行模式,Linux進(jìn)程管理及作業(yè)控制的啟動(dòng)進(jìn)程的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


本文名稱:深入探究Linux進(jìn)程執(zhí)行模式(linux進(jìn)程執(zhí)行模式)
路徑分享:http://m.5511xx.com/article/cdopdoe.html