這篇文檔包含了你用solaris和Sun平台工作時所需要的最重要的20%的技術。它能處理你所遇到的80%的問題。
這篇文檔並不打算覆蓋Solaris處理環境的細節,也不會包含常見問題解答(相關的書和鏈接將在附錄中給出)。這本書將用來為剛成為Solaris系統管理員的新手或沒有每天管理Solaris系統基礎的人提供一種怎樣收集這種信息的服務。這篇文章關注的方向是用來做技術開發的圖形工作站,也將對希望為建立一套用來演示或作為基准的Sun系統的人有所幫助。
兩點提醒:
· 永遠記住在記錄日志中記錄下你對系統的每一次改動
· 清楚的在頭腦中記住這篇文檔包含能讓系統不可用的系統級的程序。除非你對它的破壞性做了仔細的分析,否則不要在正在使用的系統上執行這些程序。
1 系統啟動和測試
1.1 OK提示符
每套SUN都有一個Boot-PROM模式,可以在啟動操作系統之前訪問,也可以在運行的時候訪問,可以用STOP+A進入,如果沒有STOP鍵(PC),可以用ctrl+break.。一旦進入Boot-PROM模式,會出現OK提示符。如果操作系統運行時候出現,可以用go繼續。
1.2 控制台測試
Boot-PROM模式可以用直接連接的鍵盤和顯示器,也可以用終端。
如果系統啟動時候沒有檢測到鍵盤,輸入輸出自動轉到第1個串口(/dev/ttya,A),可以連接一個終端或者另一計算機(通過交叉串口線)到這個端口。
如果另外的計算機是SUN工作站,可以使用tip hardwire來查看啟動控制台。Tip命令輸入之後,所有的啟動信息會出現在相應的終端窗口裡面,如果被觀察的機器用了STOP+A,必須使用Strg-]把tip改成telnet模式,然後輸入一個BREAK:telnet>;send brk
1.3 重新啟動SUN工作站
重新啟動之前,工作站需要進入一個合適的狀態,可以使用下面及格命令退出:
# init 5
# init 6
# init 0
SUN工作站在重新啟動之前,會以一定的方式關閉系統,下面是幾種可選擇的方法:
最好、最干淨的方法:
- # init 5 關閉所有進程,然後系統自動關掉電源。
- #init 6,關閉所有進程,然後系統自動從新啟動。
- #init 0,關閉所有進程,然後系統自動回到OK狀態。
在這3種情況下,在系統關閉之前執行/etc/rc0.d下面的K*腳本,這可以用於關閉數據庫,或者關閉WEB服務器的進程ID文件等。
如果沒有合適的shell窗口,可以使用遠程登錄來執行上面的命令。遠程也不可以,可以使用下面的方法:
- STOP-A
- OK sync 同步文件系統,中斷OS,然後重啟。
注意:需要察看隨之產生的保存在/var/crash/
;下面的內核轉儲文件。
如果碰到STOP-A也不能使用的情況,必須關閉計算機電源,在打開電源。
1.4 系統的測試
啟動系統,在執行到內存測試的時候,按下STOP-A。
下面的段落只描述很重要的命令。
1.4.1 Banner(標識)
Banner顯示下列信息:
. CPU的數量、類型和頻率
. 內存
. MAC地址和主機地址(主機號)
. 控制台顯示卡類型
. Sun-Globe: Creator 3D
. Sun with face: Elite 3D
. Self-describing Logo: PGX, Raptor GFX (=PGX32), Expert3D(lite) XVR-500, XVR-1000 etc.
1.4.2檢測
probe-scsi-all列出內置和外置的所有SCSI設備。對於IDE硬盤,使用:probe-ide-all.
1.4.3 測試所有
test-all.運行所有的自檢,可以檢測象網線是否正常等情況。
1.4.4 printenv and devalias
devalias列出所有別名,printenv列出所有變量。例如boot-device變量,定義了計算機啟動的路徑,一般情況下是disk,disk是一個指向特定設備的別名。
1.4.5禁止網卡錯誤信息
當網卡在沒連接網線啟動的時候,"Interface: No link"會出現多次,可以在OK下面設置
setenv tpe_link test false 來禁止這個報錯信息。
2 管理硬盤
2.1 邏輯設備名
所有的硬盤都有一個共同的命名方案,該方案包括一下四個部分:
c 控制器號
t 目標號,對於SCSU設備,就是對應的SCSI地址。
d 驅動號或者是RAID設備的LUN 號(一個地址,多個硬盤)
S 分區號(見下一段)
這些邏輯設備的以連接方式放在/dev/dsk和/dev/rdsk目錄裡面,並指向物理設備名。但這些物理設備僅在改變啟動設備時用到,一般的命令都以邏輯設備為參數。
例如:
c0t0d0s0 通常是工作站的第1硬盤,c0t1d0s0 是第2個 c0t6d0s0 是內部光驅(SCSI地址是6)
在OK提示下輸入 boot –r可以更新/dev/dsk and /dev/rdsk目錄裡面的內容,devfsadm也可以。
Solaris8以前的需要用drvconfig;disks;devlinks3個命令來完成,刷新之後,probe-scsi-all所看到的設備的邏輯連接也就能看見了。
2.2 分區
下面是一個兩個硬盤的工作站用format命令看到的內容
c0t0d0
c0t1d0
這裡顯示的是硬盤,不是分區或扇區,format的目的就是產生和管理分區,一個硬盤最多可以優個分區,用format-print可以查看。如果使用缺省安裝,Solaris安裝工具就會把系統盤分成slices: / (root) /usr /var 和 /export/home。Solaris 8操作系統缺省安裝產生3個分區,大約1G的根區,SWAP區(根據內存容量確定大小),剩余空間給/export/home.
對於工作站來說,這個缺省分區不是最優化的,分區的容量不能在數據不丟失的情況下擴充。在分區空間用盡的情況下,必須使用符號連接。對於服務器來說,得保留一個分區給/var目錄,
這樣的話,保存在/var/tmp裡面的記錄和大文件就不會影響到根區,避免系統產生問題。
建議工作站這樣分區
slice 0: / root-Partition, incl. /usr, /var, /opt plus
/export/home
slice 1: swap 交換區,和物理內存一樣大
slice 2: backup 不要改變這個分區!!代表整個硬盤
slice 7: sds 用於Solstice DiskSuite(TM) metadata的小分區
為了使用Solstice Disksuite logical volume manager (SDS),建議保留30M,用於拷貝"state replica databases".可以參閱後面的使用SDS鏡像啟動盤
從Solaris 8 02/02開始,會自動安裝Live Upgrade。使用Live Upgrade,可以在系統正在運行的時候拷貝當前根的環境。例如可以測試新的操作系統而不用改變正在運行的系統。為了產生這個預備啟動環境(ABS),必須留出足夠的空間,現在的硬盤空間足夠大,可以使用下面分區:
slice 0: / root-partition, incl. /usr, /var, /opt
slice 1: swap swap-Partition, as large as physical memory
slice 2: backup Do not change this partition!
It is always the size of the whole disk
slice 3: /export OS-independent data, home-directories
slice 4: ;, to be used as ABE with Live Upgrade
( about 150% of the expected size of / )
slice 7: sds A small space reserved for Disksuite metadata
2.3 Crashdumps
從Solaris 7開始,缺省情況下crashdump寫到交換區上,這也是為什麼交換區為什麼和內存一樣大的原因之一。下次啟動的時候,從交換區中讀取這個文件,壓縮之後寫到var/crash/;裡面,用於以後的分析。因此/var(如果沒有單獨分出/var或者是/區)不能太小。
如果一個系統用了幾個G的空間作為dump設備,啟動時會由於上面提到的拷貝操作,花上很長時間。這時候,最好利用dumpadm定義一個dump分區,從這個指定分區拷貝的操作會在後台運行。注意經常檢查和清除/var/crash/;,保證有足夠的空間用於其他的crashdumps.
2.4 Example
假如有一台E450系統並且有一個已經配置好的啟動盤,但你不知道兩件事情:(1)盤插哪裡(系統又20個槽,必須裝到安裝系統時硬盤所在的槽裡才能啟動),(2)忘了超級用戶口令。把 盤插到一個任意槽裡,按下面的步驟:
第1步 插入一個啟動光盤(SOLARIS 安裝盤)STOP+A,然後 boot cdrom –s。如果用外置光驅,就需要probe-scsi-all列出光驅位置,然後boot <光驅路徑>; -s。系統起來之後,就有了一個不需要口令的超級用戶窗口。
第2步 開始mount硬盤。首先用devfsadm重新建立設備,在/dev/dsk下面會有8個新文件。接下來使用format-print-partition確認盤已經裝好,並找出來哪個分區是root分區,通常都是0區 。假設盤插到2槽,format會識別到c1t2d0(SCSI ID是2,第1個控制器),c1t2d0s0就是root分區,因此應該ount這個盤,fsck –Y /dev/rdsk/c1t2d0s0;mldir /tmp/disk;mount /dev/dsk/c1t2d0s0 /tmp/disk
第3步 首先清楚/tmp/etc/shadow裡面的root後面的加密內容清空,然後查看/tmp/etc/vfstab裡面看看該盤是不是第2槽的,如果是,/應該mount在/dev/dsk/c1t2d0s0,如果不是,就把硬盤插到相應的槽裡面。
第4步 假設在/tmp/etc/vfstab裡面看到的是/dev/dsk/c1t2d0s0,這說明在原來的系統裡面啟動盤就是第2槽,一般,E450會從第1槽啟動(c1t0d0s0)。在/dev/dsk裡面找到並記下來c1t0d0s0指向的物理設備文件名。
第5步 reboot,STOP+A,輸入:boot <物理設備文件名>;。
第6步 定義別名, nvalias my disk <物理設備文件名>;,這樣就可以輸入boot mydisk就可以啟動了。定義setenv boot-device mydisk,系統就會自動從mydisk啟動了。
2.5 Removable Devices
2.5.1 Volume Management(卷管理)
可移動設備又卷管理器來負責,卷管理器檢測CD-ROM並自動掛接到/cdrom/cdrom0下面。一些手工操作會造成卷管理器錯誤,比如使用曲別針打開光驅,而不是使用eject cdrom命令。只這時候需要手工重起卷管理器.
/etc/init.d/volmgt stop
/etc/init.d/volmgt start
2.5.2 軟驅
插入軟盤(UNIX或DOS格式)必須使用volcheck才能使用卷管理器管理軟驅。如果volcheck成功,軟驅會出現在/floppy/floppy0下面,使用eject floppy而不手工取出軟盤。
2.5.3 CD-ROM
CDROM不需要volcheck,開機就會被檢測到,並掛接在/cdrom/cdrom0下面,沒有shell或命令使用/cdrom路徑時可以使用eject cdrom彈出光驅,fuser –c /cdrom/cdrom列出所有和光驅有關的進程ID或命令,fuser –k可以快速殺掉相關進程。
如果沒有卷管理器,使用下面的方法管理CDROM(假設SCSI地址是6):
- mkdir /tmp/cdrom
- mount -F hsfs /dev/dsk/c0t6d0s0 /tmp/cdrom
- (Work with CD mounted on /tmp/cdrom)
- umount /tmp/cdrom
- eject /dev/dsk/c0t6d0s0
2.5.4 CD-R 和 CD-RW
CDRW,是一個與solaris 8 捆綁的工具,用來燒制CD-R或者CD-RW介質。這個工具也可以燒制用命令mkisofs從solaris文件系統和目錄中創建的ISO鏡象文件。
看下面帶精確參數的例子:
#! /bin/sh
# ./nfscd ; ;
# PARAMETER1 = Application ID
# PARAMETER2 = from where
#
# ./nfscd SunNetManager /net/center2000/export/pkg/SUNWsnm
# set Umask
umask 022
# Remove old image
rm /data/disk.img
# Create image
mkisofs -A $1 -d -l -L -o /data/disk.img -P "Sun Microsystems" -p
"Solaris SPARC" -r -R -J -V "$1" -v $2
# Burn
cdrw -i /data/disk.img
2.5.5 磁帶
磁帶設備不是用卷管理器來控制的,它們必須用命令tar來處理。典型的磁帶設備被作為一個外部SCSI設備連接到系統。當solaris OE 運行時它們的連接和配置就已經被完成了,在運行以前版本的solaris命令devfsadm(solaris 8 OE) 或者drvconfig; tapes;devlinks,你能找到一些邏輯的連接在/dev/rmt 目錄。0描述的是第一個磁帶設備,1是第二個磁帶設備。
通過以上,你就可以訪問這個磁帶,用命令 tar tvf /dev/rmt/0.
注意:SGI系統寫入的磁帶通常只能用特定的塊因子(blocksize)來讀
tar tvfb 512 /dev/rmt/0
在某些情況下,需要進行字節交換操作,才能正確讀取
dd if=/dev/rmt/0 conv=swab | tar tvfb 512 -
2.6 克隆磁盤
通過這部分的學習,你可以把一個系統克隆到另一個和它的硬件屬於同一系列的系統中。例如克隆Ultra(TM) 10工作站到Ultra 10工作站是可以的,而克隆到Ultra 60工作站就是行不通的。
如果監測到目標系統的硬件結構和源系統有所不同的話(不同的結構緩沖,網卡等),目標系統在克隆以後需要用boot –r命令來重新配置。
2.6.1 使用內部磁盤來克隆
這種方式適合用於易於改變的內部磁盤:
·Ultra 30, Ultra 60, Ultra 80或者Sun Blade(TM) 100工作站或者E220R/E420R/E250R/E450
·Sun Enterprise(TM)220R, 420R, 250, 或者450服務器
內部的FC-AL磁盤(如Sun Blade 2000工作站和Sun Fire(TM) 280R或V880服務器)可能導致一些問題。
接下來是用Ultra 60工作站做的一個范例:
1 將目標盤插入主板上的第二個硬盤口
3 啟動進入但用戶模式(STOP-A; boot –s)
4 用devfsadm重新配置所有的磁盤
5 鍵入format察看硬盤的名稱。在Ultra 60工作站上,你會看到c0t0d0和c0t1d0。C0t1d0是內部系統中最頂端的磁盤。
6 決定哪個盤是源盤,哪個盤是目標盤(不要忘記備份你的數據!)。在我們的例子中c0t0d0(底部的盤)作為源盤,c0t1d0(上面的盤)是目標盤。
7 dd if=/dev/rdsk/c0t0d0s2 of=/dev/dsk/c0t1d0s2 bs=128k(這條命令為整個盤,包括分區標的內容作了一個1:1的副本。如果源盤是一個9GB的盤,而目標盤是一個18GB的盤,那麼將會有9GB的容量被浪費)。警告:仔細檢查這一步,避免對你源盤的意外損壞。
8 fsck –Y of=/dev/dsk/c0t1d0s0(檢查啟動分區的文件系統,一般來說是分區0)
9 移除源盤,將克隆好的盤放進先前源盤所在的位置。重新啟動你新做好的克隆的系統
2.6.2 通過轉接線來克隆
這種方式比上面描述的通過內部磁盤克隆要慢,但是它適合用於一些內部的磁盤不容易改變的系統(如Ultra 10或Ultra 5工作站)。
警告:記住文件“/.rhosts”僅僅在這個任務中使用,在完成這個任務之後刪除它來避免系統的安全漏洞。
目標系統
啟動
在注冊屏幕上使用命令行注冊(command line login)
盡可能地停止引起磁盤輸入輸出的進程
TERM=vt100vi /etc/inet/hosts
->;添加目標和源
ifconfig hme0 plumb
ifconfig hme0 ; netmask 255…up
->;測試rsh源
rsh source “dd if=/dev/rdsk/c0t0d0s2 ibs=128k obs=8k” | dd of=dev/rdsk/cotodos2 bis=128k obs=128k
(9GB的盤需要等待大約40分鐘)
STOP-Aboot cdrom –s(用可引導的光盤引導)
fsck –Y /dev/rdsk/c0t0d0s0
源系統
在文件/.rhosts中添加目標IP
sync; sync;
2.7 用SDS制作磁盤鏡像
Solaris邏輯卷面管理(SVM),一般是指Solstice Disksuite(SDS)軟件,它可以把磁盤系統做成RAID 0, 1, 0+1或5。工作站最感興趣的方式是RAID 1:為磁盤錯誤准備好了一個包含啟動文件系統的磁盤鏡像。
SVM是Solaris 9系統環境的一部分。在Solaris 8平台上,你可以在第二章光盤的“EA”目錄下找到SDS軟件。而在Solaris 7或者2.6系統環境中,服務器版,你可以查找一下光盤“Easy Access Server”。
我們假定一個工作站有兩塊內部的磁盤,c0t0d0和c0t1d0。這兩塊盤都以相同的方式被正確的分區:分區0被分配給/(root),分區1被分配給交換區(swap),一個比較小的分區7被分配用來記錄復制數據庫(State Replica Databases)。分區2被定義成一個備份區(參見“分區”一章)。
把第一塊盤的分區信息復制到第二塊盤,可以用如下的命令:
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
記錄復制數據庫是一個包含了鏡像信息紀錄的小文件。鏡像中的每個磁盤都必須知道有三個記錄復制數據庫文件:
# metadb -a -f -c 3 c0t0d0s3 c0t1d0s3
下一步,在第一塊磁盤上創建第一個子鏡像,它包含了啟動文件系統:
# metainit -f d50 1 1 c0t0d0s0
然後在第二塊磁盤上創建第二個子鏡像:
# metainit d52 1 1 c0t1d0s0
使用第一個子鏡像創建鏡像的第一個部分:
# metainit d54 -m d50
用metaroot修改/etc/vfstab和/etc/system,讓系統可以從元設備(metadevice)d54上啟動:
# metaroot d54
重新啟動系統,然後將添加第二個子鏡像d54。這就強制了“鏡像同步”,將第一塊盤的內容復制到了第二塊盤。這將在一小段時間內影響系統的性能。
# metattach d54 d52
為了避免在從第二塊盤上緊急啟動時發生錯誤信息,交換分區必須做成相同樣式的鏡像。否則,交換分區在損壞的磁盤上,/etc/vfstab仍然會定位到c0t0d0s1。
現在系統已經可以從第一塊盤(boot disk),也可以從第二塊盤(boot disk1)上啟動了。
如果有一塊磁盤損壞,Solstice DiskSuite會停止啟動程序。這是因為如果要在一次錯誤以後成功地啟動系統,紀錄復制數據庫的大部分必須依然“幸存”。在我們的兩塊鏡像盤上僅僅需要六個復制中的三個依然存活。
超過兩塊盤的服務需要有第三塊盤來用記錄復制數據庫來配置。兩塊盤的工作站必須手動地修復,下面的例子描述了這個過程:
·記錄數據庫復制在c0t0d0s7和c0t1d0s7上配置,c0t0d0盤發生故障。
·啟動程序被Solstice DiskSuite停止,並轉換進入到單用戶模式。
·現在記錄數據庫復制希望發生錯誤的盤沒有被配置:
metadb -d -f c0t0d0s7
·在下一次重啟之後,對重置的磁盤進行分區,使它和仍然活動的磁盤的分區一致。
·做完這些之後,在重置的硬盤上創建記錄數據庫復制文件:
metadb -a -c 3 c0t0d0s7
·在下次的重啟之後,鏡像又可以重新同步了。
注意:
如果你有一個兩塊盤的系統,在一塊盤上創建三個記錄數據庫復制,在另一塊上面創建四個。在理論上有50%的機會可以在一次錯誤後重新啟動系統而不需要手動地去使用元數據。
如果你能接受在2盤系統下發生錯誤後無人職守的重啟,在兩塊盤上創建相同數量的記錄數據庫復制並且創建/etc/system條目:
set md:mirrored_root_flag=1
3 SWAP交換空間
3.1 固定配置文件 /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes –
/dev/dsk/c0t0d0s1 - - swap - no –
/usr/local/swapfile.1 - - swap - no –
...
swap - /tmp tmpfs - yes –
交換文件系統可以使用像/dev/dsk/c0t0d0s1這樣的裸分區或者象/usr/local/swapfil.1的空文件。
你可以定義多個交換文件系統,所有這些都在邏輯上綁定並掛接到/tmp掛接點。這就意味著只要物理內存是可用的,向/tmp中寫文件將寫入內存並耗盡內存(not very sure)
例如:
/dev/dsk/c0t0d0s1 - - swap - no –
/dev/dsk/c0t1d0s1 - - swap - no –
/dev/dsk/c0t2d0s1 - - swap - no –
...
swap - /tmp tmpfs - yes –
上面創建了另外的6GB的虛擬內存(假設所有的分區大小為2G).Solaris將條帶訪問對所有的磁盤。
3.2 "裸分區”和空文件的比較
最快速的交換就是不進行交換,假如物理交換不可避免,使用在多可磁盤上條帶後的分區。如果實在需要內存或者沒有可用的分區或磁盤,則使用空文件系統。
3.3 臨時配置
在標准的SOLARIS操作中,空文件可以加入到交換空間。
# mkfile 100m /usr/local/swapfile.1
# swap -a /usr/local/swapfile.1
# swap -l
在系統重啟之前,這些額外的空間是臨時的。可以使用命令swap -d /usr/local/swapfile.1去掉這些額外的交換空間
4 系統安裝和維護
4.1 CD安裝
在安裝過程中,你盡可以輕松地按照屏幕的提示進行,但也許會有一些小的缺陷;
- Name Service:選擇 NONE.如果你這時候選擇象NIS這樣的內容,因為網絡還沒有安裝好,所以沒有NIS服務可用,這時系統可能會“掛起”等待NIS服務器響應,在基本的網絡安裝完成後再配置NIS或DNS會更好些。
- 安裝群集:對於工作站而言,應該始終選擇"Entire Plus OEM Software"項來確保安裝所有的內容。對於專用服務器,去掉不必要的服務包可以最大降低安全風險。參考 SUN 藍皮書《Minimizing the Solaris[tm] Operating Environment for Security: Updated for Solaris 9 Operating Environment>;>;
- 磁盤分區:根據再“分區”這一章所提供的建議,為了能夠對磁盤進行分區,當提示安裝方式時,選擇“定制”方式而不是“默認”方式。
從 Solaris 7 OE版本開始,安裝CD內含有預打包的Solaris映像.如果需要升級以前的季度升級包到該映像文件的版本,參考“維護升級”
安裝完畢後,root用戶只能從system控制台登錄,這種終端方式直接連接到系統或鍵盤。為了允許通過TELNET,RSH等從遠程登錄,必須修改一個文件:注釋該行:CONSOLE=/dev/console!in!/etc/default/login.注意:這是一項安全分險。
4.2 包的安裝
包是通過tar/compress/zip等工具壓縮的一些目錄文件,其命名規則名字如下:前面的四個大寫字母代表發行該包公司的US股票代碼,後面的小寫字母代表其功能。例如SUNWspci2這個軟件包,就是SUN-pci卡的驅動程序包,前面的SUNW是SUN的股票代碼,後面的spci2是其功能(PCI卡驅動)。
安裝命令如下(後面的目錄裡必須包含這個包)
pkgadd -d /cdrom/cdrom0
pkginfo 打印該包的信息,pkgrm ;刪除(卸載)已經安裝的包。
例如:你的機器原來安裝的顯示卡是Creator3D(ffb)換成了Elite3D(afb),這樣開機的時候會提示"no console framebuffer"(沒有顯示卡),說明沒安裝Elite3D驅動程序。使用
pkginfo | grep -i afb
命令檢查,沒有輸出,說明安裝系統的時候沒有安裝Elite3D顯示卡的驅動,而Elite3D的驅動程序在安裝盤的s0/Solaris/Product. 進入這個目錄,使用下面命令安裝即可:
pkgadd -d . *afb*
重新啟動機器,新安裝的顯示卡就可以正常顯示了。
4.3補丁安裝
補丁的數字代碼包含了兩個部分,6位數字的補丁號,後面是兩位數字的版本號,人員123456-78。
Solaris8使用的是*.zip格式的補丁壓縮,以前使用的是*.tar.Z的格式的包。安裝補丁的時候,先拷貝到/tmp下面,然後接壓縮,安裝之後要刪除這些臨時文件。解壓縮辦法:
zcat 123456-78.tar.Z | tar xvf -
unzip 123456-78.zip
然後使用patchadd 123456-78這樣的命令安裝這個補丁。使用patchadd 123456-78安裝的補丁可以使用pkgrm刪除(卸載),/var/sadm/patch紀錄了這些安裝紀錄,這個目錄沒有的話,pkgrm就不能正常刪除補丁了。
showrev -p | grep ;可以查找到已經安裝的補丁包。
5 X-Server和CDE用戶接口
5.1 常見的需要注意的問題
X-Server或者CDE總是按照以下順序搜索配置文件:
1. $HOME/.dt/...
2. /etc/dt/...
3. /usr/dt/...
注意,永遠不要改動在整個系統范圍內都生效的/usr/dt/中的內容。如果系統的X-Server或CDE出現 問題,總是使用/etc/dt/下的文件去維護或恢復設置。用戶自己的配置如擴展按鈕或面板的改變等,配置總是保存在$HOME/.dt/目錄下。在本節以下的內容中,將用;來代替這些目錄($HOME/.dt, /etc/dt,/usr/dt)。
5.2 定制登陸界面
文件:;/config/$LANG/Xresources
Logo(象素圖或位圖,24位色或以下,廣泛裝載時間):
Dtlogin*logo*bitmapFile: /usr/local/lib/X11/dt/bitmaps/Mylogo.bm
通用歡迎登陸語句:
Dtlogin*greeting*labelString: Here's %LcoalHost%!
輸入用戶名後的歡迎:
Dtlogin*greeting*persLabelString: Hello %s
5.3 從多屏幕登陸,Xinerama,和24位色
首先查看 /dev/fbs,找出有幾個顯示卡可用,它們是如何命名的. 確認有 /dev/fbs/ifb0和/dev/fbs/ifb1,兩個 Expert 3D顯示卡。
然後,把X-Server文件從/usr/dt/config復制到/etc/dt/config,編輯該文件,確認最後一行與以下內容相同:
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner
5.3.1 多屏幕
多屏幕是指CDE在每個屏幕中運行一個完整的用戶面板。鼠標可以在兩個屏幕間移動,而各屏幕上的窗口不能在兩個屏幕間移動。ifb0的的顯示屏幕被稱為: :0.0, ifb1的顯示屏幕被稱為: :0.1
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -dev /dev/fbs/ifb0 -dev /dev/fbs/ifb1 -nobanner
5.3.2 Xinerama
Xinerama(Solaris 7 11/99 OE以後的版本有效)是一個覆蓋多個顯示屏幕的的虛擬顯示屏幕。鼠標和程序窗口可以在多個顯示屏幕之間移動, CDE只生成一個用戶前端面板。只有一個顯示號碼: 0:0. Xinerama 只在使用相同的顯示卡時才可用。
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 +xinerama -dev /dev/fbs/ifb0 -dev/fbs/ifb1 -nobanner
Xinerama 允許定義一X和Y方向的重疊,這種設置使顯示畫面邊擴展到多個顯示器上,使兩個顯示器顯示一個圖形窗口(Xoverlap=<水平解析象素>;),下面是一個在1280像素的的水平分辨率,20%邊緣重疊顯示的配置例子:
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 = xinerama -xoverlap 256 -dev /dev/fbs/ifb0 -dev /dev/fbs/ifb1 -nobaaner
5.3.3 使用24位色深
CDE本身默認使用8位色深(256色). 不過這沒有問題,因為每個窗口可以使用單獨的顏色位深設置。某些顯示卡只有一個顏色表,這可能導致在某些應用中出現程序窗口顏色閃爍的現象。只需要將CDE修改成使用24位色深。如果使用PGX顯卡,需要使用命令
fbconfig -degth 24
將框架緩沖區切換到24位。
注意:由於某些老的應用只支持8位色深,不是24位色深,可能會出現問題。
:0 Local local_uid@concole root /usr/openwin/bin/Xsun :0 -dev /dev/fbs/ifb0 defdepth 24 -dev /dev/fbs/ifb1 defdepth 24 –nobanner
5.4 用戶定制CDE面板
CDE中的應用啟動機制叫做“活動”。當用戶將鼠標點到一個CDE圖標是,“活動”發生預定義的行為,一旦定義以後,“活動”的關聯到環境變量中:Menus, file manager, MIME-types 和定義文件
5.4.1 活動(Actions)
CDE 按照以下順序搜索*.dt-files配置文件:
$HOME/.dt/types
/etc/dt/types/$LANG/
/usr/dt/types/$LANG/
例如,StarOffice52.dt(這是在$HOME/.dt/types下安裝完StarOffice之後)
ACTION StarOffice52
{
LABEL StarOffice 5.2
TYPE COMMAND
EXEC_STRING "/opt/Office52/program/soffice" "%(File)Args%"
ICON So52
WINDOW_TYPE NO_STDIO
DESCRIPTION StarOffice
}
5.4.2 圖標
一個活動的的定義還包含一個圖標名。圖標名按照以下順序解析:
$HOME/.dt/icons
/etc/dt/icons/$LANG/
/usr/dt/icons/$LANG/
naming scheme: ;.;.;
例如StarOffice52的圖標文件存在以下位置: $HOME/.dt/icons/So52.m.bm
5.4.3 用戶前面板
通過添加*.fp-files文件到$HOME/.dt/types目錄下,可以方便簡單的擴展用戶前面板。默認定義存儲在:
. /etc/dt/types/$LANG/
. /usr/dt/types/$LANG/
例如($HOME/.dt/types/tools.fp)
CONTROL Tools (Always define the main control before sub panel)
{
TYPE icon
CONTAINER_TYPE BOX
CONTAINER_NAME Top
POSITION_HINTS first
ICON Dtagen (This is a folder icon, Icon must exist!)
LABEL Tools
}
SUBPANEL Toolspanel
{
CONTAINER_NAME Tools
TITLE My Tools
}
CONTROL StarOffice52
{
TYPE icon
CONTAINER_TYPE SUBPANEL
CONTAINER_NAME Toolpanel
ICON So52
LABEL Star Office 5.2
PUSH_ACTION StarOffice52 (compare ACTION StarOffice52)
DROP_ACTION StarOffice52
}
你可以通過在子面板(SUBPANEL)裡添加額外的控制(CONTROLs),來建立整個菜單按鈕
6 顯示卡和OpenGL
6.1 Fbconfig
在Solaris 8 系統環境中,fbconfig是配置顯示卡的唯一的程序接口,每個顯示卡有自己的專用配置工具。在Solaris 8 軟件中,通過有規則的命名方式來與/dev/fbs下的設備名對應。
下面是一些顯示卡配置命令及對應的顯示卡類型
. ffbconfig Creator, Creator3D
. afbconfig Elite3D
. ifbconfig Expert3D, Expert3Dlite
. m64config PGX24 (onboard U5, U10), PGX64
. gfxconfig PGX32
在下面的內容中,只提及fbconfig,其他命令的參數都是一樣的。如果沒有在配置中把某個設備指定給某個顯示卡,fbconfig工作在默認的顯示卡(接主屏幕的顯示卡)。
可以使用 ls /dev/fbs命令查找系統中安裝了哪些顯示卡。另外,可以使用下列命令通過設備名直接列出系統中安裝了的顯示卡。
fbconfig -res /dev/fbs/afb1 -propt -prconf
這個命令可以列出第二個Elite3D顯示卡的配置信息,例如顯示卡的類型、分辨率等。第一個Elite3D顯示卡使用的設備名是 afb0。
fbconfig -res \?
這條命令將列出該顯示卡支持的分辨率,指定的分辨率可以"剪切&拷貝" 到下面命令裡面:
fbconfig -res "1280x1024x86" -try -now
-try和-now都是選項。
-try將只會改變10秒鐘的分辨率。可以使用這個方法測試顯示器和改變之後的視頻信號是否同步。-now參數使分辨率改變立即生效,不需要重啟X-Server。然而,有些時候使用-now選項改變分辨率後,屏幕顯示會有一點幾何失真,可以用退出用戶再重新登陸來重新啟動X-Server的方法來解決。
fbconfig -g 1.7
命令將gamma因子設定到1.7,默認值是2.2,通常看起來可能太亮了。
新的gamma因子設定,不用重啟X-Server就可以立刻生效,而且重啟後依然有效。
6.2 ogl_install_check
盡管在Solaris 2.5.1以後的版本的CD中都有OpenGL軟件包,但在Solaris系統安裝過程中,不會自動安裝。 使用以下命令檢查該系統上是否正確安裝了OpenGL,以及OpenGl軟件的版本:
/usr/openwin/demo/GL/ogl_install_chech
注意:在正確的設置了gamma因子後,OPENGL的測試環的設置也很簡單了。
推薦使用最新版本的OpenGL。 例如Xinerama只能支持OpenGL1.2.1以後的版本。OpenGL的下載地址
6.3 和圖形卡相關的補丁
下面是和顯示卡有關的補丁列表,它和Solaris版本、OpenGL版本和顯示卡類型有關系。
1.顯示卡補丁
2.X-Server補丁
3.OpenGl
4.OpenGL補丁
顯示卡補丁列表:(詳細列表參見原版21頁)
顯示卡類型 Solaris 9 OE Solaris 8 OE Solaris 7 OE
Expert3D (lite) 112540 108576 108787
XVR-500 112540 108576 不支持
XVR-1000 112565 112564 不支持
Elite3D 111620 108604 106144
- and XFB 106148
- and VIS 109872 106147
Creator3D 112621 108605 106145
- and XFB 106148
- and VIS 109872 106147
OpenGL 1.2.2 32 Bit: 111993 32 Bit: 111993 32 Bit: 111993
64 Bit: 111994 64 Bit: 111994 64 Bit: 111994
OpenGL 1.2.3 32 Bit: 112628 32 Bit: 112628 32 Bit: 112628
64 Bit: 112629 64 Bit: 112629 64 Bit: 112629
XSun 112785 108652 108376
PGX32 /64 112622 109154 107716
7 管理
7.1 主機
你可以用admintool或者smc創建主機列表文件hosts,直接編輯/etc/inet/hosts文件更簡單。提示:/etc/hosts文件是/etc/inet/hosts文件的連接。
7.2 串口
同樣,常用的最佳工具是admintool或者是Solaris 9環境下的“Solaris 管理控制台(Solaris Management Console)”smc。
7.3 打印機
同樣,常用的最佳工具是admintool。Solaris 9環境下,有系統自帶的“打印機設置向導”/usr/sadm/admin/bin/printmgr。
7.4 創建用戶
創建用戶常用的最佳工具是admintool。從Solaris 9平台開始,使用“Solaris 管理控制台”smc。當創建新用戶時不要指定/home/;作為用戶的起始目錄(須禁止autofs)。用下面的更好: /export/home/;。
/home/;目錄默認作為Solaris自動裝載器(automounter)的目標目錄,因此不可寫。一些第三方軟件試圖使用/home/xyz目錄。為避免出錯,應該關閉自動裝載器或者改變它的默認設置。
7.5 Shell和環境變量
正確的設置環境變量是系統設置中最有效的減少錯誤的方法之一。不幸的是,在使用不同的shell的情況下,如何設置變量以及針對特定用戶的性能優化所用的語法各不相同。
最常用的命令解釋器是sh,ksh和csh。從Solaris 8開始,流行的bash也可以使用了。sh是安裝完成後root用戶默認的命令解釋器。一般情況下,用戶的默認命令解釋器在/etc/passwd文件中定義,例如:demo:x:2003:10:Demo User:/export/home/demo:/bin/csh 下表描述如何在不同的命令解釋器中設置變量:表1(見附件)
所有命令解釋器在啟動時讀取一系列文件。登錄命令解釋器(login shell,通常在用戶使用telnet,ssh等登錄系統後啟動)與子命令解釋器(subshell,即sh,ksh,csh或者bash的統稱)讀取的文件不同。下表描述了不同命令解釋器所讀取的文件:表2(見附件)
表格在原文P23頁。
8 網絡連接
8.1 /etc目錄下的文件
Solaris 軟件在/etc目錄下存放網絡配置文件。所有的配置數據比如ip地址、網關等可以被定義或者在運行層進行修改,而只有那些存放在/etc目錄文件中的定義可以在系統重啟後可以保存下來,永久生效。
可以在這些文件中找到主機名(hostname):
/etc/nodename
/etc/hostname.;
/etc/inet/hosts
/etc/net/{ticlts,ticots,ticotsord}/hosts
/etc/nodename 這個文件定義了系統名,從網絡的觀點看,一個有多塊網卡和多個ip地址的系統可以有多個名字。每個都在/etc/inet/hosts中有定義。 這些名字中的任何一個都等價於系統名( nodename),但是他們不是必須的 。
有些文件產生了ip地址跟網卡接口名之間的連接。他們是/etc/hostname.;;。
最常見interface name是:
le 老式sparc系統上的以太網網卡名
hme Ultra sparc系統上的快速以太網網卡名
eri UltraSPARC-III 系統上的快速以太網網卡名
qfe 基於四口擴展以太網卡上的快速以太網網卡名
舉例: 一台有QFE (QuadFastEthernet)的Ultra 60 工作站有五個網絡接口: hme0 (on board),qfe0,qfe1,qfe2 and qfe3 (on the QFE-card)。主機名是 hermione, 則 /etc/inet/hosts文件的內容如下:
127.0.0.1 localhost
191.133.23.10 dumbledore
在公司的局域網上地址是157.168.34.12的系統就叫hermione,相應的,文件 hostname.hme0 必須包含 hermione 這個名字。
Dumbledore(191.133.23.10)是網絡服務提供商分配的地址。這根纜線連接到QFE的第一個端口 qfe0 ,所以文件 hostname.qfe0 包含 dumbledore 這個字符串。
qfe1-3 現在沒有使用。為了避免solaris出現“沒有纜線連接”這種錯誤信息,對於沒有使用的接口不要生成hostname.* 這種文件。
一個具有多個網絡接口的系統會在各個子網之間自動路由,例如在我們例子中的157.168.*.* 和 191.133.*.* 子網之間。在系統啟動的時候,會顯示出來"machine is a router"這條信息。 如果不希望啟動路由服務,手工生成一個空文件 /etc/notrouter 接著重新啟動系統就可以了。
Ip地址的子網掩碼定義在文件/etc/netmasks中。在X-Server運行時不要更改nodename,最好更改nodename或hostname之前,從當前的會話中退出來然後使用命令行界面重新登陸。
8.2 虛擬網絡接口
有時候,對於只有一塊網卡的系統定義2個ip地址是很有用的。例如,商業演示用的demo工作站了為了與其它的主機通信而需要添加另一個地址的同時也需要保留自己公司的ip地址,這個需求可以通過虛擬網絡接口得以實現。實現方法就和上一章節描述2塊物理網卡的情形一樣, 僅有的不同是我們這次不使用 hme0 和 qfe0 ,而是使用 hme0 和 hme0:1,所以如果你寫dumbledore 字符串到/etc/hostname.hme0:1 文件,在商業演示時ISP提供的網線就可以接到 hme0, QFE網卡就不再需要了。
8.3 ifconfig工具
ifconfig -a 列出所有物理和虛擬的接口定義,包括ip地址和子網掩碼。 另外在系統運行期間我們還可以用ifconfig去定義ip地址和子網掩碼(在hpux系統中這樣的定義當系統重新啟動後就不存在了,不知solaris是不是這樣)。 讓我們再來看Ultra 60 工作站的例子,這次首先假定dumbledore在/etc/inet/hosts中沒有定義,那麼 qfe0 在系統重新啟動後就不再被使用。
現在第一步是去激活qfe0(加載驅動):ifconfig qfe0 plumb
開始配置這種網絡接口:
ifconfig qfe0 191.133.23.10 netmask 255.255.255.0 up
ifconfig -a 可以看到新的配置
對於虛擬網絡接口這個步驟是相同的:
ifconfig hme0:1 plumb
ifconfig hme0:1 191.133.23.10 netmask 255.255.255.0 up
8.4路由
可以將IP地址加入/etc/defaultrouter文件來設定默認路由(或者是標准網關)。如果在此文件中加入的是主機名,要確認/etc/inet/hosts文件中已經定義了此主機名。 等價的命令是:
*刪除所有當前路由:route flush
*將1.2.3.4定義為默認路由:route add default 1.2.3.4
*用netstat -r命令可以查看更改結果。
如果機器上有兩個以上可用的網絡接口,Solaris會自動啟用IP轉發。
要檢查IP轉發是否已經啟用:ndd -get /dev/ip_forwarding
啟用IP轉發:ndd -set /dev/ip_forwarding 1
關閉IP轉發:ndd -set /dev/ip_forwarding 0
另一種關閉IP轉發的方法是創建/etc/norouter文件,例如touch /etc/norouter
8.5NIS客戶機
-首先將NIS域名加入/etc/defaultdomain文件(區分大小寫)
-然後在/etc/inet/hosts文件中加入NIS服務器
-運行ypinit -c,輸入NIS服務器名稱 -運行/usr/lib/netsvc/yp/ypstart或者重啟。
在/etc目錄中有名為nsswitch.nis的預設文件,對於所有可用項目都帶有nis定義。
8.6 DNS客戶機
nameserver 192.168.0.1
8.7 DHCP客戶機
如果創建兩個空文件/etc/hostname.<網絡接口名稱>;和/etc/dhcp.<網絡接口名稱>;,此接口就配置為使用DHCP。Solaris會用30秒等待DHCP服務器應答。可以在/etc/dhcp.<網絡接口名稱>;修改此時間: WAIT <以秒計的時間>;
可以在網絡接口運行時啟用DHCP(在此例中是對接口qfe0):
ifconfig qfe0 plumb
ifconfig qfe0 dhcp start
8.8 sys-unconfig
如果要更改網絡配置,但是對相關的文件不確定,有一個簡單的方法:sys-unconfig,關閉機器。在下一次重啟(在OK提示符下輸入boot)時所有Solaris安裝時網絡相關的問題都會再次問到。(IP地址,網關,掩碼等等)。
8.9 10Mb還是100Mb,全雙工還是半雙工?
可以用ndd /dev/;命令查詢網絡接口狀態。;一般是le, hme, eri或者是qfe。
-ndd /dev/eri link_status: 0=down, 1=up
-ndd /dev/eri link_speed: 0=10Mb, 1=100Mb
Solaris對於所有網絡接口的參數默認為“自適應”。如果添加的網絡設備不支持自適應,就要手動設置參數。將多余的參數設為0。
10Mb半雙工的例子:
ndd -set /dev/eri adv_100fdx_cap 0
ndd -set /dev/eri adv_100hdx_cap 0
ndd -set /dev/eri adv_10fdx_cap 0
ndd -set /dev/eri adv_10hdx_cap 1
ndd -set /dev/eri adv_autoneg_cap 0
用ifconfig unplumb關閉網絡接口然後用ifconfig plumb重啟接口。也可以在/etc/system文件中定義這些設置。(set eri: eri_adv_10hdx_cap=1)
9.網絡文件系統
9.1 NFS服務器
Solaris將目錄信息存儲在/etc/dfs/dfstab 中,以便於在網絡上的其他系統安裝。該文件是一個被share命令使用的腳本。
例如:共享/export/home
1、 添加share /export/home 到/etc/dfs/dfstab中
3、 輸入shareall
4、 如果/export/home被正確共享的話,使用share命令檢查
9.2NFS客戶端
一個NFS客戶端不需要制定任何域,但是,NFS服務器名是重要的。一個IP地址 (mount 192.168.0.1:/export/home)是不夠的,所有的NFS服務器必須在/etc/inet/hosts,NIS或者DNS中定義。
你能夠安裝(mount)一個網絡目錄,使用命令 mount server:/export/home /tmp/home。如果這個安裝點需要在下次系統重起的時候自動的安裝的話,在文件/etc/vfstab中插入該安裝點的相關內容。
注意:當使用root用戶在網絡目錄中拷貝文件的時候,注意,本地的root和網絡目錄上的root是不同的,都是作為"nobody"(除非在服務器上使用了anon=0)。網絡目錄下的文件沒有"other"用戶的讀權限是禁止拷貝的,為了使用root用戶從網絡文件目錄中拷貝所有的文件,不要使用下列命令:
root# cd server:/verz;tar cvf - | (cd verz;tar xvf -)
最好使用 rsh來在該服務器上獲得 root用戶的讀權限:
root# rsh server "cd /verz; tar cvf -"|(cd verz;tar xvf -)
9.3 與其他的流行的UNIX系統的區別
在Solaris上的NFS系統與其他流行的UNIX版本中(Linux,AIX等)的實現不完全相同:
1)文件:Solaris 系統中文件/etc/dfs/dfstab,由/etc/exports取代;
2) 命令:Solaris 系統中的命令shareall由exportfs -a取代。
9.4 自動加載(AutoMounter)
自動加載功能可以實現在用戶訪問相關目錄的時候自動的將文件系統加載(mount)。在大型網絡環
境中,如果大量主機和用戶的具有如下目錄路徑/net/;或/home/;是,將會非常有幫助。
兩個文件定義自動加載的基本操作:/etc/auto_master和/etc/auto_home.
auto_master文件預定義了上述自動加載的行為。
目錄/net將會在訪問相關的主機是自動加載。
/home目錄的自動加載功能在/etc/auto_home文件中定義。
/net -hosts -nosuid,nobrowse
/home auto_home -nobrowse
如果/etc/auto_home文件包含以下行
/export/home/&
當有人訪問/home/joe目錄時,自動加載功能將起作用,把/export/home/joe 加載到這個加載點
(/home/joe)
10 工具
10.1 編譯器
c, c++和fortran編譯器通常安裝在/opt/SUNWspro/bin目錄, 通用工具象make安裝在/usr/ccs/bin下.
10.2 GNU工具包
10.3 SUN PCi和SUNPCi-II
很多工作站都裝備有SUNPCi卡. 這是一個運行WINDOWS(98,ME,NT,2000,XP)系統的完整PC.這裡有一些關於操作SUNPCi卡的提示.
*封裝/opt/SUNWspci2/bin/sunpci進一個小腳本以設置一些環境變量:
setenv NVL_INTERFACE=hme0 (如果SUNPCi要用hme0網絡界面)
setenv LANG=C
setenv KBCP=850 (例如:德國鍵盤/代碼頁)
setenv KBTYPE=GR (還記得MS-DOS嗎?)
*不但讓root可寫c:映像, 而且這個工作站上的每一個用戶都要有666權限.當sunpci由一個用戶啟動時, 一個叫pc的子目錄在該用戶的HOME下產生.為讓該用戶同全局c:映像協同工作, 中斷隨後的特定用戶映像的創建, 並且編輯sunpci.ini文件以指向那個全局映像(例如: /pc/C.diskimage).
10.4 staroffice 軟件
如果staroffice軟件由root執行setup /net安裝, 所有用戶能在他們的個別安裝期間選擇”工作站安裝”選項. 工作站安裝僅僅拷貝1MB數據進該用戶的home目錄, 而其他的情況使用集中式安裝. 如果staroffice軟件安裝在/opt/Office60, 用戶能用/opt/Office60/program/soffice來啟動他的工作站安裝.
10.5 netscape navigator浏覽器
從solaris 8開始, netscape navigator作為標准浏覽器. 它被安裝在/usr/dt/bin/netscape.
10.6 雜項
提示: 當啟動桌面時, 那個注冊提醒器能用”more information”中的“never register”選項禁止.
要禁止所有用戶中出現的的警告信息, 在/etc/default/solregis文件中加入一行:DISABLE=1
11.提示集
11.1 3個首要提示
l c-shell: 在~/.cshrc中定義 set filec和set history=100 savehist=50, 一旦你按下esc鍵, shell將完成文件名和目錄名. History列出最後的100條命令, 用!13用讓編號13的命令重新出現.!$用於列出先前命令的最後一個參數, 象: mkdir /export/home/demo/test後鍵入cd !$. 從solaris 8開始, tcsh有效了, 它有用光標鍵編輯命令行和浏覽歷史命令的功能.
l 進程控制 : 從solaris 8 O以後, 可以用pkill <搜索文本>; 去替代由ps –ef|grep <搜索文本>;, 然後kill <搜索文本的PID>;所能達到的功能. Kill -9 -1中斷屬於當前用戶的所有進程.
l 文件編輯: 不喜歡vi的人可用CDE的編輯器dtpad.
11.2 硬件配置分析
11.2.1 prtdiag
/usr/platform/`uname –i`/sbin/prtdiag –v命令顯示CPU的數量及類型, RAM, 擴展卡等硬件配置信息.
11.2.2 prtcon/path_to_inst
prtconf 以階層的形式列出設備目錄. 用邏輯設備(驅動程序在/dev)映射物理設備(在/devices下指定)的說明在/etc/path_to_inst文件中. 當執行boot –r或devfsadm時, 這個文件被重寫. 在把一張卡從一個PCI槽移到另一個槽後, 必須編輯這個文件. 在該文件中, /dev/hme1被連接到一個特定槽. Reboot不能重新定義這個關系.
警告: 手工編輯/etc/path_to_inst需要設備路徑操作的高級經驗. 編輯錯誤會導致系統不能引導!
11.2.3 explorer
11.3 運行時數據分析
11.3.1 time/ptime
較簡單的運行時分析工具有time(0.1sec解析)和ptime(1msec解析), 它們能加入命令行. time gzip j2sdk.tar.gz 的結果分成用戶(程序)時間, 系統時間和用去的時間.
11.3.2 top/prstat/ps
solaris下的prstat類似於其他平台下的top工具./usr/ucb/ps –aux顯示相近的結果, 但它沒有排序且不能自動更新.
ps –L –p ;列出有線程的進程及其線程數.
11.3.3 vmstat/mpstat
vmstat <以秒計頻率>;列出系統負載明細. 下面行列出大多數有趣的:
free: 空閒內存(直到solaris 7此值接近零, 因為有用磁盤緩存. 從solaris8開始反映了的正確值.)
page pi/po: 頁面調度行為. 系統不交換直到在交換設備上i/o流量被報告!
Cpu us: user-time. 被應用程序消耗的百分比.
Cpu sy: system-time.被solaris系統消耗的百分比.
Cpu id: idle-time.
Vmstat參數輸出結果解釋(原文沒有,RACE注)
procs 報表下面三種狀態的進程數:
r--在運行隊列中等候運行
b--被資源阻塞(I/0,頁面調度,等等.)
w--可運行但是被換出的
memory 報告虛擬內存和實存信息:
swap--以千字節為單位的當前可用交換空間的數量
free--以千字節為單位的頁自由表大小
page 報告每秒頁面調度活動數量的信息:
re-從自由表回收頁
mf--次要的錯誤;地址空間或硬件地址轉換錯誤
pi--頁入的千字節數
po -頁出的千字節數
fr- 釋放的千字節數
de--以千字節為單位的可接受的短期內存不足數
sr--頁由時鐘算法掃描
disk 可以為四個磁盤報告每秒磁盤I/O的數量
faults 報告每秒系統軟件中斷和硬件中斷的速率
in-設備中斷,不包括系統時鐘中斷
sy-系統調用
cs-CPU任務(上下文)交換
cpu-- CPU故障時間的百分比,在多處理器系統上,這是全部處理器的平均值:
us- 用戶時間
sy-- 系統時間
id-- 閒置時間
mstat 打印類似信息, 每個處理器一行.
mpstat輸出結果解釋(原文沒有,RACE注)
*CPU——處理器ID
*minf——一般故障
*mjf ——重大故障
*xcal——處事器間的交叉調用
*intr——中斷
*ithr——線程中斷,不計時鐘中斷
*csw——任務交換
*icsw——非主動任務交換
*migr——向另一處理器的線程轉移
*smtx——互斥信號旋轉(第一次時不要求鎖定)
*srw——讀/寫鎖定旋轉(第一次時不要求鎖定)
*syscl——系統調用
*usr ——用戶時間百分比
*sys——系統時間百分比
*wt——等待時間百分比
*idd——空閒時間百分比
11.3.4 iostat
iostat –xtcP <以秒計頻率>;列出系統i/o負載.每一個分區或NFS裝載打印一行. “kr/s”和”kw/s”行顯示以千字節/秒為單位的讀寫吞吐量. 若”svc_t”大於100表明那磁盤用於磁頭(?)分配的時間多過數據傳送的時間.
iostat輸出結果解釋(原文沒有,RACE注)
tin每秒輸入的字符數
tout每秒輸出的字符數
kps每秒傳輸的千字符數
tps每秒傳輸的操作次數
serv以毫秒計的的平均服務時間
最後一組報告了CPU使用率:
us用戶狀態所占百分比
sy系統狀態所占百分比
wt等待狀態所占百分比
id空閒時間所占百分比
us用戶狀態所占百分比
ni用於運行nice或renice的進程的時間所占百分比
sy系統狀態所占百分比
id空閒時間所占百分比
r/s每秒的讀傳輸操作
w/s每秒的寫傳輸操作
kr/s每秒的千字節數
kw/s每秒寫的千字節數
wait在設備隊列中等待命令的平均數目
actv在處理中的命令的平均數目
svc_t服務時間(* 是指為一條命令服務的平均時間,這裡包括為等待在處理隊列中前面的命令所耗費的時間)
%w在隊列等待時間的百分比
%b設備忙的時間的百分比
11.3.5 sdtperfmeter, sdtprocess
sdtperfmeter是一個圖形工具, 它將vmstat的數據作為柱形或條形圖. 該工具的最小化版本顯示在CDE面板. Sdtprocess顯示用某種方式排序的所有進程. 可用於深入察看進程特性, 中斷進程等.
11.3.6 32或64位?
Isainfo –kv 顯示系統內核是32還是64位. UltraSPACR-II系統自動啟動64位內核 ; 在ok狀態下, 用boot kernel/unix而不是boot kernel/sparcv9/unix可以明確地裝入32位內核 . 而UltraSPARC III只有64位內核.
11.4 調試
11.4.1 Truss,
命令truss ; 列表應用程序執行過程中所有的系統調用,由於列表中還包含系統調用的參數和返回,因而我們可看到應用程序調用的共享庫和配置文件以及它們的文件位置。
11.4.2 pstack,pmap
"p*-command" 輸出屬於該進程的詳細信息
pstack ; 顯示進程的最後一個子程序名
pldd ; 顯示共享連接庫列表
pmap -x ; 顯示該進程與它的裝載模塊的內存使用情況
11.4.3 snoop
snoop 輸出通過網卡所有的包
11.5 常見問題
1. 啟動進程過長
OBP 設置:ls diag-swith?=true ??
2. 不能用FTP登陸,但telnet、ssh可以
在/ect/ftpuser中設置不允許用戶FTP登陸
3. VI 不能正確的顯示
查看變量term 是否定義,如果沒有,設置term=vt100