二、啟動進程
鍵入需要運行的程序的程序名,執行一個程序,其實也就是啟動了一個進程。在aix系統中每個進程都具有一個進程號,用于系統識別和調度進程。啟動一個進程有兩個主要途徑∶手工啟動和調度啟動,后者是事先進行設置,根據用戶要求自行啟動。
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文件。首先可以使用任何文本編輯器建立一個新文件,然后向其中寫入需要運行的命令和要定期執行的時間。然后存盤退出。假設該文件為/tmp/test.cron。再后就是使用crontab命令來安裝這個文件,使之成為該用戶的crontab文件。鍵入∶
crontab test.cron
這樣一個crontab 文件就建立好了。可以轉到/var/spool/cron目錄下面查看,發現多了一個foxy文件。這個文件就是所需的crontab文件。
在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個 域,其中前五個域是指定命令被執行的時間,最后一個域是要被執行的命令。每個域之間使用空格或者制表符分隔。
格式如下∶
minute hour day-of-month month-of-year day-of-week commands
第一項是分鐘,第二項是小時,第三項是一個月的第幾天,第四項是一年的第幾個月,第五項是一周的星期幾,第六項是要執行的命令。這些項都不能為空,必須填入。如果用戶不需要指定其中的幾項,那么可以使用*代替。因為*是統配符,可以代替任何字符,所以就可以認為是任何時間,也就是該項被忽略了。
進程的掛起及恢復命令bg、fg
作業控制允許將進程掛起并可以在需要時恢復進程的運行,被掛起的作業恢復 后將從中止處開始繼續運行。只要在鍵盤上按ctrl+z,即可掛起當前的前臺作業。 在鍵盤上按ctrl+z后,將掛起當前執行的命令cat。使用jobs命令可以顯示 shell的作業清單,包括具體的作業、作業號以及作業當前所處的狀態。恢復進程執行時,有兩種選擇∶用fg命令將掛起的作業放回到前臺執行;用bg命令將掛起的作業放到后臺執行。 靈活使用上述命令,將給自己帶來很大的方便。
進程查看
由于aix是個多用戶系統,有時候也要了解其他用戶現在在干什么,同時 aix是一個多進程系統,經常需要對這些進程進行一些調配和管理;而要進行管理,首先就要知道現在的進程情況∶究竟有哪些進程?進程情況如何?等等。所以需要進程查看方面的工作。
who命令
該命令主要用于查看當前在線上的用戶情況。這個命令非常有用。如果用戶想 和其他用戶建立即時通訊,比如使用talk命令,那么首先要確定的就是該用戶確實在線上,不然talk進程就無法建立起來。又如,系統管理員希望監視每個登錄的用戶此時此刻的所作所為,也要使用who命令。
who命令應用起來非常簡單,可以比較準確地掌握用戶的情況,所以使用非常廣泛。
w命令
該命令也用于顯示登錄到系統的用戶情況,但是與who不同的是,w命令功能更 加強大,它不但可以顯示有誰登錄到系統,還可以顯示出這些用戶當前正在進行的工作,并且統計數據相對who命令來說更加詳細和科學,可以認為w命令就是who命令的一個增強版。w命令的顯示項目按以下順序排列∶當前時間,系統啟動到現在的時間,登錄用戶的數目,系統在最近1秒、5秒和15秒的平均負載。然后是每個用戶的各項數據,項目顯示順序如下∶登錄帳號、終端名稱、遠程主機名、登錄時間、空閑時間、JCPU、PCPU、當前正在運行進程的命令行。其中JCPU時間指的是和該終端(tty)連接的所有進程占用的時間。這個時間里并不包括過去的后臺作業時間,但卻包括當前正在運行的后臺作業所占用的時間。而PCPU時間則是指當前進程(即在WHAT項中顯示的進程)所占用的時間。
ps命令
ps命令就是最基本同時也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵尸、哪些進程占用了過多的資源等等。總之大部分信息都是可以通過執行該命令得到的。
Symantec的研究員Kaoru Hayashi最近發現了一種Linux蠕蟲病毒,能夠迅速感染家用路由器,...
目前磁盤存儲市場上,存儲分類根據服務器類型分為:封閉系統的存儲和開放系統的存儲,封...
網速變得很慢,有可能是以下原因導致的: 防火墻的過多使用 防火墻的過多使用也可導致...
everRun enterprise軟件為核心的軟件容錯方案,可以為用戶提供業務連續和數據整合所需要...
數據丟失 補要一年 硬盤質量令人堪憂 小吳是公司財務,每天要錄入大量的數據,上班第...
本報訊(記者 董長青)春節長假剛過,中關村最大的電子賣場鼎好即在賣場內發布公告稱,賣...
標記命令排隊的核心概念是磁盤驅動器可以擁有智能處理器,因此,可以大大地提高設備的性...