正在使用哪個(gè)版本的 AIX? 在需要幫助時(shí) , 提供詳細(xì)信息 ! 做為一個(gè) UNIX 開(kāi)發(fā)、維護(hù)者,當(dāng)然要知道當(dāng)前登陸系統(tǒng)的具體版本。這樣當(dāng)需要和其它技術(shù)人員交流經(jīng)驗(yàn),分享樂(lè)趣,以及尋求幫助的時(shí)候,你可以讓他們盡快而詳解的了解你的系統(tǒng)的基本信息。從 2006 年后,AIX 的版本管理更加細(xì)化全面, 但復(fù)雜的層次也更容易讓不了解的人產(chǎn)生混亂。先看一個(gè)輸出例子: $ oslevel -s
5300-06-05-0806
$
|
這里列出的版本信息可以具體解釋為,當(dāng)前的系統(tǒng)環(huán)境是 AIX 版本 5, ML (Maintenance Level)3,TL(Technical Level)06,SP(Service Pack)05。 TL 是 IBM 會(huì)較長(zhǎng)時(shí)間支持的版本, 對(duì)于每個(gè)發(fā)布的 TL,AIX 產(chǎn)品部門(mén)每隔 6 周左右都會(huì)發(fā)布更新的 SP 來(lái)發(fā)布新的硬件支持, 解決系統(tǒng)已知的漏洞等。 另外一個(gè)更全面的命令, 經(jīng)常為 AIX 系統(tǒng)工程師,AIX 系統(tǒng)管理員使用的是一個(gè) AIX 4.3.3 以來(lái)即支持的命令,prtconf (或者 lsconf)。它的示例輸出如下:
清單 1.prtconf 命令輸出樣本
$ prtconf
System Model: IBM,8203-E4A
Machine Serial Number: XXXXXXX
Processor Type: PowerPC_POWER6
Processor Implementation Mode: POWER 6
Processor Version: PV_6_Compat
Number Of Processors: 1
Processor Clock Speed: 4204 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 3 aix53
Memory Size: 6208 MB
Good Memory Size: 6208 MB
Platform Firmware level: EL320_076
Firmware Version: IBM,EL320_076
Console Login: enable
Auto Restart: true
Full Core: false
Network Information
Host Name: aix53
IP Address: 9.125.241.55
Sub Netmask: 255.255.255.0
Gateway: 9.125.241.1
Name Server: 9.181.2.101
Domain Name: cn.ibm.com
Paging Space Information
Total Paging Space: 2048MB
Percent Used: 4%
...............................
$
|
我們可以看到這個(gè)命令詳細(xì)的列出了系統(tǒng)的硬件配置, 包括硬盤(pán),CPU,內(nèi)存的配置以及網(wǎng)絡(luò)地址等信息。這比我們使用 ifconfig – a、uname、lsdev 等命令分別去收集快多了。
監(jiān)控系統(tǒng)性能,不是超級(jí)用戶也可以做到! 開(kāi)發(fā)者和系統(tǒng)普通用戶如 DBA 也需要關(guān)注系統(tǒng)的性能。AIX 系統(tǒng)也在其環(huán)境下也為我們這些非 root 的普通用戶準(zhǔn)備了足夠的監(jiān)控工具。 首先介紹一個(gè)窗口式的工具 topas,在不同的 UNIX 或者 Linux 下的命令 top 有所不同,AIX 中使用的是 topas。使用這個(gè)命令我們可以在同一個(gè)界面下,全局性的觀察到系統(tǒng)中各個(gè)資源 - CPU,網(wǎng)絡(luò),磁盤(pán), 內(nèi)存和交換區(qū)等使用情況。常常我們需要關(guān)注的參見(jiàn)如下圖框選的各個(gè)部分:
圖 1.topas 命令的系統(tǒng)界面截圖
框選的部分分別代表了系統(tǒng) CPU 等待時(shí)間(這個(gè)指標(biāo)常常影響著 CPU 性能), 磁盤(pán)的繁忙程度以及進(jìn)程占用 CPU 的百分比, 交換區(qū)的使用情況。這些是最常用和基本的指標(biāo)。 另外常用的普通用戶可以使用的監(jiān)控命令包括 iostat 和 vmstat。 前者報(bào)告存儲(chǔ) IO 的使用情況, 而后者主要用于監(jiān)控內(nèi)存和 CPU 的使用情況。常常用于系統(tǒng)日常運(yùn)行狀態(tài)的信息收集。使用起來(lái)很簡(jiǎn)單, 比如“iostat 3”和 “vmstat 1 10” 等。需要注意 vmstat 的第一行表示的是系統(tǒng)啟動(dòng)以來(lái)的統(tǒng)計(jì)信息, 在進(jìn)行實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì)和分析的時(shí)候需要排除這一行。
識(shí)別你當(dāng)前的 session – 使用變量 " S1" 如果細(xì)心觀察,你會(huì)發(fā)現(xiàn),不同人使用的命令行界面常常是不同的,即使在同一個(gè)系統(tǒng)里邊(當(dāng)然這里不是指 $ 和 #,一個(gè)為普通用戶在 AIX 下默認(rèn)的命令提示符,另一個(gè)則為超級(jí)用戶 root 的默認(rèn)提示符)。你可以看到提供很多有效信息的命令提示符,比如: zhudany@Testing1:/home/zhudany/Scripts> |
這個(gè)提示符里紀(jì)錄了當(dāng)前登陸用戶 ID 以及登陸的機(jī)器的主機(jī)名,當(dāng)前你所在的文件系統(tǒng)路徑。在同時(shí)使用多個(gè)系統(tǒng)的時(shí)候,這些信息可以幫助你始終正確鑒別是否在正確的服務(wù)器、用戶、文件目錄下做正確的事情,而不用不時(shí)的輸入系統(tǒng)命令來(lái)查看確認(rèn)這些信息。 如何配置出這樣的提示?很簡(jiǎn)單,使用如下命令即可: PS1=`whoami`'@'`hostname`' PWD\>' |
也就是設(shè)置變量 PS1 即可。當(dāng)這個(gè)命令輸入后,你當(dāng)前的命令提示符立即更新為你個(gè)性化的模樣了。怎么樣, 還不試試?
安全的設(shè)置系統(tǒng)的關(guān)鍵變量之一 - " ATH" 大量的 UNIX 安全相關(guān)的書(shū)籍都會(huì)建議,“為了安全起見(jiàn),請(qǐng)使用絕對(duì)路徑來(lái)運(yùn)行腳本 / 命令!睘槭裁葱枰@樣?讓我們結(jié)合一個(gè)常見(jiàn)的環(huán)境變量 PATH 來(lái)揭開(kāi)謎底。 首先看一個(gè)問(wèn)題,如果給我們兩個(gè)設(shè)置環(huán)境變量 PATH 的方法: 選擇 1 PATH=/usr/bin:/etc:/usr/sbin:/usr/vac/bin/:/usr/ucb:. 選擇 2 PATH=.:/usr/bin:/etc:/usr/sbin:/usr/vac/bin/:/usr/ucb 可以看到,唯一的區(qū)別是路徑“.”的位置。你會(huì)選擇哪種呢?也許你會(huì)說(shuō)無(wú)所謂。好,讓我們來(lái)看看其中的差別。 首先我們知道,路徑“.”代表當(dāng)前的工作目錄。在揭曉謎底前我們先看個(gè)實(shí)驗(yàn)。具體步驟如下: 實(shí)驗(yàn)的目標(biāo)很簡(jiǎn)單,我們希望刪除 experiment 目錄下的大量的 machineLog 開(kāi)頭的文件:
清單 2. 實(shí)驗(yàn)初始環(huán)境
root@Testing1:/experiment>ls -l
total 124
drwxr-xr-x 2 root system 8192 Apr 08 16:02 ABB
-rw-r--r-- 1 root system 0 Apr 08 16:06 machineLog0.log
-rw-r--r-- 1 root system 0 Apr 08 16:06 machineLog1.log
……
-rw-r--r-- 1 root system 0 Apr 08 16:07 machineLog106.log
……
-rw-r--r-- 1 root system 0 Apr 08 16:06 machineLog209.log
-rwxr--r-- 1 root system 30 Apr 08 16:07 rm
-rw-r--r-- 1 root system 0 Apr 08 16:13 rm123333d
-rw-r--r-- 1 root system 0 Apr 08 16:14 rmddsf
-rw-r--r-- 1 root system 0 Apr 08 16:13 rmdfcdt45
-rw-r--r-- 1 root system 0 Apr 08 16:14 rmewrksadf
-rw-r--r-- 1 root system 0 Mar 26 23:40 t11aoopiupupo5t
-rw-r--r-- 1 root system 0 Mar 26 23:41 t123dsfdsaf3t
root@Testing1:/experiment>
|
同時(shí)在 /experiment/ABB 目錄下,有大量的項(xiàng)目源代碼等重要文件,這些是我們絕對(duì)不希望丟失的重要文件:
清單 3. 重要文件清單
root@Testing1:/experiment/ABB>ls -1
ProjectAFileA.java
ProjectACore.jar
ProjectASub1.jar
……
ProjectAFileZ.jsp
root@Testing1:/experiment/ABB>
我們當(dāng)前的 PATH 設(shè)置為:
root@Testing1:/experiment>echo $PATH
.:/usr/bin:/etc:/usr/sbin:/usr/vac/bin/:/usr/ucb
root@Testing1:/experiment>
|
也就是采用了“選擇 2”。 現(xiàn)在我們輸入 AIX 命令 rm 來(lái)清理那些 machineLog 開(kāi)頭的文件: root@Testing1:/experiment>rm machineLog*.log
root@Testing1:/experiment>
|
命令正常結(jié)束,返回到提示符,很好,一切正!,F(xiàn)在看目錄下很干凈了: root@Testing1:/experiment>ls
ABB rm123333d rmdfcdt45 t11aoopiupupo5t
rm rmddsf rmewrksadf t123dsfdsaf3t
root@Testing1:/experiment>
|
實(shí)現(xiàn)目標(biāo)。但是,別高興太早, 我們?cè)倏纯茨莻(gè)存放重要文件的目錄, root@Testing1:/experiment>cd ABB
root@Testing1:/experiment/ABB>ls
root@Testing1:/experiment/ABB>
|
什么都沒(méi)有了!我們最不期望的事情發(fā)生了。這是為什么?不要急,讓我們仔細(xì)觀察這個(gè)命令的輸出:
清單 4. 當(dāng)前目錄文件清單
root@Testing1:/experiment>ls
ABB rm123333d rmdfcdt45 t11aoopiupupo5t
rm rmddsf rmewrksadf t123dsfdsaf3t
root@Testing1:/experiment>
|
看到了么,在當(dāng)前目錄下,有一個(gè)文件就叫做 rm (在大量文件混雜的復(fù)雜目錄下,很容易忽略它)!看看它的內(nèi)容:
清單 5. 偽造的 rm 命令內(nèi)容
root@Testing1:/experiment>cat rm
/usr/bin/rm -rf /experiment/ABB/*
/usr/bin/rm $1
root@Testing1:/experiment>
|
原來(lái)是它刪除了我們重要的文件!它實(shí)際是一個(gè)經(jīng)過(guò)偽裝的 shell 腳本,我們執(zhí)行的時(shí)候沒(méi)有發(fā)現(xiàn)異常,但是它已經(jīng)偷偷刪除了我們的重要文件。 這里只列舉了一個(gè)簡(jiǎn)單的例子。實(shí)際在系統(tǒng)遭遇惡意的破壞時(shí),腳本里邊可能寫(xiě)的是更危險(xiǎn)的命令, 或者設(shè)置后門(mén)等危及系統(tǒng)安全的操作。 由這個(gè)例子我們知道,使用絕對(duì)路徑是多么的重要,它可以防止我們不慎運(yùn)行了不期望的命令,尤其是使用 root 用戶操作的時(shí)候更要注意這一點(diǎn)。 另外,這里需要提及的一句是, UNIX 只在當(dāng)前 shell 的 PATH 變量所設(shè)置的路徑中搜尋你輸入的命令所需要的執(zhí)行文件。也就是說(shuō), 如果 PATH 里邊沒(méi)有’ . ’配置,UNIX 是不會(huì)搜尋當(dāng)前目錄下的可執(zhí)行文件的。 為了操作方便,有時(shí)我們不想每次都使用絕對(duì)路徑來(lái)執(zhí)行命令,而這時(shí)又常常需要運(yùn)行當(dāng)前目錄下的文件,這種情況下,使用“選擇 1”也會(huì)保險(xiǎn)的多!
使用 "history" 命令 , 復(fù)用你的輸入 ! 使用命令行的時(shí)候我們常常要輸入很多命令,這些命令又經(jīng)常會(huì)需要有很多參數(shù)配合,因此有時(shí) AIX 的命令看起來(lái)顯得很復(fù)雜冗長(zhǎng)。尤其在調(diào)試的時(shí)候,常常會(huì)輸入大量重復(fù)的命令。有沒(méi)有辦法可以提高工作效率? 這里解釋一個(gè)復(fù)用歷史命令的好方法。 首先介紹一下 AIX 的 shell 環(huán)境,默認(rèn)情況下所有用戶都使用 Korn Shell。Korn Shell 會(huì)在用戶的 HOME 目錄下維護(hù)一個(gè)命令日志文件 .sh_history 。默認(rèn)情況下這個(gè)文件會(huì)紀(jì)錄 128 條用戶的歷史命令信息。這是個(gè)文本文件,我們可以直接用文本工具查看它的內(nèi)容。 現(xiàn)在看看如何重復(fù)使用這些歷史命令。首先,AIX 提供了一個(gè)定制的別名(alias)命令 history,我們可以用它來(lái)查閱這些歷史命令:
清單 6. 歷史命令樣例
root@Testing1:/experiment>history
1220 df -k
1221 df -k
1222 df -k
1223 df -k
1224 id
1225 pwd
1226 history
1227 man history
1228 find /etc – user root -ls
1229 alias
1230 man fc
1231 which fc
1232 man alias
1233 man r
1234 alias
1235 history
root@Testing1:/experiment>
|
也可以在 history 后加參數(shù), 比如 history -128 來(lái)查看更多的命令歷史。 之后我們采用另外一個(gè)定制的別名命令 r 來(lái)調(diào)用這些歷史命令紀(jì)錄。這里舉一個(gè)例子, 比如我們要再次使用剛剛輸入過(guò)的命令 find /etc – user root – ls, 也就是我們需要調(diào)用標(biāo)號(hào)為 1228 的歷史命令,同時(shí)我們又期望這次不再查看用戶 root,而是用戶 user1 的情況,我們可以這樣調(diào)用: root@Testing1:/experiment>r 1228 root=user1 |
這樣實(shí)際上就是輸入了歷史命令“find /etc – user user1 – ls”。 現(xiàn)在我們知道別名命令 history 和 r 可以通過(guò)復(fù)用或者修改一處歷史命令,來(lái)提高我們與系統(tǒng)交互的命令輸入速度。如果想修改更多地方呢,有沒(méi)有解決辦法?強(qiáng)大的 shell 環(huán)境告訴我們, 可以! 我們還可以使用 set -o vi 來(lái)調(diào)用編輯器 vi 來(lái)直接修改這些歷史命令,這樣當(dāng)需要大量修改歷史命令的時(shí)候我們可以更有效率的工作。輸入這個(gè)命令后,命令行即激活了編輯模式, 我們可以在需要使用歷史命令的時(shí)候,敲“Esc”鍵進(jìn)入 VI 編輯模式, 使用 VI 的“/”,“?”查找歷史命令,使用 VI 的光標(biāo)移動(dòng)和編輯命令來(lái)修改找到的要修改的目標(biāo)命令。具體的操作可以參考 VI 的 help 文檔,這里不再贅述。
"." 命令 (csh 下則是 "source" 命令 ) 做為一種重要的 UNIX 環(huán)境,要熟練使用 AIX,我們應(yīng)該熟悉命令行界面。因此還是需要先介紹一下 shell 環(huán)境。 在 AIX 的默認(rèn) KSH 環(huán)境下,我們使用到的變量有兩種類型,環(huán)境變量和本地變量。我們可以分別使用命令 env 和 set 來(lái)檢查這兩種變量的設(shè)置, 也可以使用 export 命令將本地變量輸出為環(huán)境變量。 這兩種變量的區(qū)別是什么?簡(jiǎn)單來(lái)說(shuō),本地變量只有當(dāng)前 shell 可以使用,而環(huán)境變量則可以被當(dāng)前 shell 以及它的子 shell 使用。 這種設(shè)置有時(shí)會(huì)給我們的腳本調(diào)試帶來(lái)一些額外的工作。比如我們會(huì)遇到兩個(gè)問(wèn)題,而這時(shí)也是我們需要使用 source 命令來(lái)提高我們工作效率的時(shí)候: 1)、當(dāng)我們調(diào)用子腳本的時(shí)候,為了傳遞必須的變量,我們必須調(diào)用 export 輸出所有的子 shell 用到的變量。在變化的環(huán)境中有時(shí)這種手工的設(shè)置很難做到及時(shí)準(zhǔn)確。當(dāng)調(diào)試復(fù)雜腳本集的時(shí)候尤其如此。這時(shí)我們可以使用 .(csh 下為 source 命令 ) 命令來(lái)調(diào)用子腳本。所有的本地變量都可以在子腳本中使用。舉個(gè)例子: 腳本 test5.sh 的內(nèi)容為:
清單 7. 腳本 test5.sh
#test5.sh
echo "Trying to print Var1: $Var1"
zhudany@Testing1:/experiment>Var1="Local variable a"
zhudany@Testing1:/experiment>./"test5.sh"
Trying to print Var1:
zhudany@Testing1:/experiment>. ./"test5.sh"
Trying to print Var1: Local variable a
zhudany@Testing1:/experiment>
|
2)、反過(guò)來(lái),還有這樣一種需求,我們每次使用新的 shell 環(huán)境時(shí),需要先設(shè)置較多的本地變量,我們也可以將這些變量存入一個(gè)腳本文件,每次初始化 shell 環(huán)境的時(shí)候使用 source 命令調(diào)用這個(gè)腳本文件既可。一個(gè)典型的例子是 .profile 文件。比如做為 DB2 實(shí)例用戶的 db2inst1 的 .profile 文件可能會(huì)有如下幾行:
清單 8. 常用的 db2 用戶 profile 內(nèi)容
if [ -f /home/db2inst1/sqllib/db2profile ]; then
. /home/db2inst1/sqllib/db2profile
fi
|
這就是使用 source 命令來(lái)引入了環(huán)境變量。 最后簡(jiǎn)單提一句,所謂 source 命令方式執(zhí)行,其實(shí)是 shell 沒(méi)有 fork 子進(jìn)程 , 因此所有的變化被記錄到當(dāng)前的 shell 進(jìn)程。
一些常用命令的技巧 下面介紹一些常用的有益的小技巧: 1)、合并文本文件: 還在用 windows 工具或者 vi 來(lái)合并文件么? 介紹一個(gè)簡(jiǎn)單的方法 ,我們可以采用
來(lái)合并文本文件 , 或者
來(lái)合并大量類似文件名的文件 ; 2)、實(shí)時(shí)監(jiān)控日志文件(自動(dòng)刷新內(nèi)容,UNIX 流模式的最佳好處。, 命令很簡(jiǎn)單:
這樣既可! 3)、find 命令的力量: Unix 下大量的實(shí)用程序極大的豐富了系統(tǒng)的功能 , 這里簡(jiǎn)單列舉 find 的幾個(gè)用法: 查詢大于 1000 個(gè) block 的文件并列出文件的詳細(xì)信息; find . -size +10000 -exec ls -l {} \; |
查詢屬主為 user1,group 組權(quán)限不為 rwx,類型為目錄的信息,并生成修改其權(quán)限的腳本; find /projects -user user1 \( ! -perm -0020 -o ! -perm -0040 -o ! -perm -0010 \)
-type d -exec echo "chmod -R g+rwx " {} \; >/tmp/chmoduser1.sh 2>/tmp/error.log
|
一個(gè)好 AIX 命令 - "portmir", 分布環(huán)境下的好幫手! portmir 是一個(gè)優(yōu)秀的 AIX 獨(dú)有的小工具。使用它我們可以甚至避免使用 Netmeeting 或者其它類似的遠(yuǎn)程桌面共享工具。我把它稱為命令行界面的“桌面共享軟件”。 它的使用很簡(jiǎn)單,十分適于分布環(huán)境下的開(kāi)發(fā)團(tuán)隊(duì)、系統(tǒng)管理團(tuán)隊(duì)協(xié)同工作。 下面介紹一下使用的步驟,先假設(shè)你的使用環(huán)境是, 你的用戶 ID 是 dev1,你希望 dev2 用戶可以訪問(wèn)、附屬(attach)到你的 login 界面,以便你們兩個(gè)人都可以觀察、使用同一個(gè)命令行界面, 就如同在同一個(gè)機(jī)器前 (當(dāng)然如果你和遠(yuǎn)程用戶使用同一個(gè) ID 的時(shí)候共享命令行界面更加簡(jiǎn)單,但是這在很多開(kāi)發(fā)場(chǎng)景里邊可能是不允許的。) - 1)、使用用戶 ID dev1 登陸 login 到你項(xiàng)目組里的 AIX 開(kāi)發(fā)系統(tǒng)上, 這個(gè)過(guò)程在系統(tǒng)中會(huì)打開(kāi)一個(gè) tty 終端設(shè)備, 這里假設(shè)它是 "pts/1"; (確認(rèn)自己當(dāng)前登陸界面的 tty 終端設(shè)備, 只需要執(zhí)行命令“who am i”,注意是 3 個(gè)分開(kāi)的單詞,命令 whoami 是不能顯示這些信息的。) 2)、在你登陸的 ID 的 $HOME 目錄下,創(chuàng)建一個(gè)文件 .mir - touch .mir 3)、編輯這個(gè)文件,在這個(gè)文件里邊增加一行,內(nèi)容就是你希望使用你的命令行界面的用戶 ID, 也就是 dev2, 然后保存退出。 4)、配置結(jié)束,遠(yuǎn)程用戶在使用 dev2 用戶登陸系統(tǒng),在他自己的命令行界面下, 輸入命令“portmir -t pts/1”既可鏡像到你的界面了!兩個(gè)界面下都可以輸入命令,輸出會(huì)被完全一致的打印在兩個(gè)命令行界面下。這里給一個(gè)簡(jiǎn)單的例子:
圖 2.,portmir 命令輸出情況系統(tǒng)界面截圖
從例子里邊可以看到,兩個(gè)屏幕都可以輸入命令,同步顯示命令的輸入以及輸出。怎么樣,是不是很神奇?盡情享受吧! |
調(diào)試 shell 腳本 UNIX 的強(qiáng)大還體現(xiàn)在它的 shell 語(yǔ)言功能的強(qiáng)大,并且有十分豐富的系統(tǒng)工具。 在 AIX 下我們經(jīng)常使用的是系統(tǒng)默認(rèn)的 Korn Shell。通過(guò) shell 語(yǔ)言我們可以寫(xiě)出十分復(fù)雜的腳本來(lái)自動(dòng)化處理大量的系統(tǒng)管理任務(wù)甚至應(yīng)用的業(yè)務(wù)邏輯。實(shí)際開(kāi)發(fā)中,調(diào)試這些腳本也是很有必要的。 如何調(diào)試呢?這需要用到 shell 的內(nèi)部命令 set。 我們可以通過(guò)在需要調(diào)試的腳本程序段前后分別執(zhí)行 set – x 和 set +x 來(lái)打開(kāi)、關(guān)閉 debug 開(kāi)關(guān)。 簡(jiǎn)單來(lái)說(shuō)打開(kāi)這個(gè) debug 開(kāi)關(guān)后, shell 在運(yùn)行腳本時(shí)會(huì)逐句打印要執(zhí)行的命令,然后再輸出命令執(zhí)行的結(jié)果。通過(guò)這個(gè)命令我們可以快速定位到 shell 邏輯中存在 bug 或者錯(cuò)誤的地方。
解決 "The parameter list is too long"問(wèn)題 我們都使用 ls 命令來(lái)查看文件夾下的文件列表。 但是這個(gè)命令并不總是成功。比如常常我們會(huì)遇到“The parameter list is too long”的報(bào)錯(cuò)。 這是為什么? 這是因?yàn)?shell 本身對(duì)輸入命令行是有長(zhǎng)度限制的。比如在 AIX 默認(rèn)的 K shell 環(huán)境下,命令行的最大長(zhǎng)度是 6*4096 字節(jié)。(參考 sys0 設(shè)備的參數(shù) ncargs)。 知道了問(wèn)題的原因,解決方案也就隨之而來(lái)了。 那就是, 我們可以修改這個(gè)參數(shù)(使用 smit chgsys)來(lái)增大系統(tǒng)的默認(rèn)值,但是這需要 root 權(quán)限來(lái)執(zhí)行。對(duì)于我們大多數(shù)的只有普通系統(tǒng)權(quán)限的用戶, 可以采用減小通配結(jié)果的長(zhǎng)度或者使用 UNIX 已有的工具來(lái)處理。 這里介紹一個(gè)常用的命令 xargs- find /tmp/ -mtime +7 -print | |xargs -n10 -ti rm {} |
通過(guò)這個(gè)命令,我們可以找到 /tmp 目錄下,七天之前修改的文件并且刪除掉, 無(wú)論找到的文件有多少。
檢查文件系統(tǒng)滿的錯(cuò)誤 我們都知道 UNIX 文件系統(tǒng)是層次結(jié)構(gòu)的。一個(gè)路徑很深的子目錄下面往往可能存在一個(gè)很大的文件系統(tǒng), 比如在 /tmp/tmp1/tmp2/tmp3/tmpx/ 下掛著(mount)一塊來(lái)自 SAN 存儲(chǔ)的大小為 300GB 的文件系統(tǒng)。 如果這個(gè)子目錄的空間使用在一夜之間突然增加, 甚至讓人意外的已經(jīng)滿了,向該子目錄寫(xiě)入內(nèi)容的程序都將報(bào)錯(cuò)甚至異常退出。 那么我們?nèi)绾尾檎也⒍ㄎ坏接袉?wèn)題的文件?也就是突然增大并填滿子目錄下的這塊 300G 的文件系統(tǒng)的罪魁禍?zhǔn)资钦l(shuí)? 剛剛介紹的 find 命令在這里可以大展宏圖了,假設(shè)這里我們想尋找一夜之內(nèi)修改、更新過(guò)的,大小超過(guò) 100MB 的文件, 并且列出最大的十個(gè)文件- find /tmp -size +204800 -mtime -1 -ls|sort -rnk7|head |
這樣基本上我們可以立即定位到有問(wèn)題的文件,并且進(jìn)行相應(yīng)的檢查和處理。 簡(jiǎn)單的情況下我們也可以使用 du 命令來(lái)快速定位。 才用“du – sk *|sort – nk1”命令我們可以依次找到占用最大空間的子目錄、文件, 從而快速定位問(wèn)題的元兇
一個(gè)游戲 - 介紹如何正確使用命令 "ln" 我們一起做個(gè)小游戲。 來(lái)猜猜這些簡(jiǎn)單的命令的執(zhí)行結(jié)果:
清單 9. 游戲涉及的命令
cd /Lib/lab3
ln -s /Lib/lab3 abc
while true; do cd abc; sleep 1; done
|
等待 15 秒, 然后取消循環(huán)。 運(yùn)行 pwd 命令,結(jié)果會(huì)是如何?!猜不到?現(xiàn)在來(lái)公布答案吧-
清單 10. pwd 命令輸出
/Lab/lab3/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc/abc |
有趣吧?!原來(lái) UNIX 下不光有企業(yè)應(yīng)用,用 script 我們可以寫(xiě)出貪吃蛇游戲, 也可以用來(lái)查看“奇跡”! 這個(gè)游戲也告訴我們要正確使用 ln命令。尤其是在使用符號(hào)鏈接來(lái)連接一個(gè)絕對(duì)路徑的時(shí)候。
總結(jié) AIX 是個(gè)豐富多彩的世界。本文通過(guò)實(shí)例由淺入深的介紹了對(duì) AIX 環(huán)境下系統(tǒng)的檢查(配置,運(yùn)行情況)、配置(命令提示符,PATH 變量)、使用(history 命令復(fù)用,source 命令使用,一些命令技巧,好用的命令 portmir)、排錯(cuò)(調(diào)試 shell,解決命令使用報(bào)錯(cuò),文件系統(tǒng)滿,以及一個(gè)小游戲來(lái)介紹 ln 命令可能產(chǎn)生的錯(cuò)誤和調(diào)整思路)的常用技巧,相信讀者在細(xì)讀本文后, 對(duì) AIX 的使用必將達(dá)到一個(gè)新的層次。
關(guān)于作者 朱丹陽(yáng),IBM DB2 LUW DBA, 有超過(guò) 10 年的銀行,電信行業(yè) UNIX,AIX 平臺(tái)應(yīng)用開(kāi)發(fā)、生產(chǎn)系統(tǒng)架構(gòu)、生產(chǎn)系統(tǒng)運(yùn)營(yíng)支持經(jīng)驗(yàn),并任專職 DB2 DBA 超過(guò) 5 年,IBM 認(rèn)證高級(jí) DBA,IBM 認(rèn)證 AIX 管理高級(jí)專家。 目前為 IBM 軟件部企業(yè)信息部門(mén)的 World Wide DBA group 成員。
http://www.ibm.com/developerworks/cn/aix/library/1008_zhudy_aixtips/index.html
|