目 錄
第1章、前言7
1.1了解超級用戶狀態8
1.1.1成為超級用戶(su)9
1.1.2退出超級用戶狀態9
1.1.3以root注冊9
1.2與用戶通信9
1.2.1在注冊時顯示系統專用信息10
1.2.2將信息發送給單個用戶10
1.2.2.1發送一個短消息給一個單獨的用戶10
1.2.2.2將作為一個文件的消息發給個別用戶11
1.2.3將消息發送給一個系統或網絡中的所有用戶11
1.2.4通過電子郵件發送消息12
1.3啟動和關閉系統12
1.3.1選擇init狀態12
1.3.1.1查看系統運行級13
1.3.1.2使用掉電狀態,運行級013
1.3.1.3使用系統管理員狀態,運行級113
1.3.1.4使用多用戶狀態,運行級213
1.3.1.5使用遠程資源共享狀態,運行級313
1.3.1.6使用替換多用戶狀態,運行級414
1.3.1.7使用交互重引導狀態,運行級514
1.3.1.8使用重引導狀態,運行級614
1.3.1.9使用單用戶狀態,運行級s或S14
1.3.1.10改變運行級14
1.3.2選擇所用的關閉命令15
1.3.2.1 shutdown15
1.3.2.2 telinit和init15
1.3.2.3 halt15
1.3.2.4 reboot15
1.3.3 引導系統15
1.3.3.1 引導到多用戶狀態15
1.3.3.2 引導到單用戶狀態15
1.3.3.3交互式引導16
1.3.3.4查看引導信息17
1.3.3.5增加新的硬件后引導系統17
1.3.3.6退回引導進程18
1.3.4關閉系統18
1.3.4.1關閉一個多用戶系統18
1.3.4.2關閉系統:可選方式19
1.4監視進程19
1.4.1 ps命令報告的內容20
1.4.2使用ps報告22
1.4.3殺死進程23
1.5基本管理工具24
1.5.1經常使用的命令24
1.5.1.1在文件系統中移動24
1.5.1.2查看在文件系統中所處的位置24
1.5.1.3改變目錄24
1.5.1.4查看文件的有關信息24
1.5.1.5顯示文件信息24
1.5.1.6查找一個文件25
1.5.1.7查看一個文件的類型25
1.5.1.8查看文件中的信息26
1.5.1.9查找文件中的字符串26
1.5.1.10查看文件27
1.5.1.11瀏覽文件27
1.5.1.12查看文件尾28
1.5.1.13查看文件頭28
1.5.1.14改變文件的所有權和許可權29
1.5.1.15改變文件組30
1.5.1.16設置或顯示系統環境30
1.5.1.17定義Bourne和Korn shell環境變量31
1.5.1.18定義C shell環境變量31
1.5.1.19顯示環境變量的設置31
1.5.1.20使用PATH變量32
1.5.1.21設置Bourne和Korn shell路徑32
1.5.1.22設置C shell路徑32
1.5.2使用管理工具32
第2章、基本OS命令33
2.1查找用戶信息33
2.1.1確定系統中有誰注冊33
2.1.1.1使用who命令33
2.1.1.2使用finger命令33
2.1.1.3使用rusers -1命令33
2.1.1.4使用whodo命令34
2.1.2檢查用戶的用戶號和組號(id命令)34
2.2查尋環境信息35
2.3創建和編輯文件35
2.3.1使用cat命令35
2.3.2使用touch命令36
2.3.3文件拷貝(cp)或改名(mv)36
2.3.4文本編輯器的使用36
2.3.5 vi的使用37
2.4命令組合及輸出重新定向37
2.4.1在同一命令行里鍵入多個命令37
2.4.2輸出重新定向(<>38
2.4.3組合命令(|)38
2.5使用手冊38
2.5.1顯示手冊(man)39
2.5.2找命令節號(whatis、man)39
2.6查閱磁盤信息40
2.6.1顯示磁盤空間的信息(df -k)40
2.6.2判別某文件系統是否為本地文件系統(df)40
2.6.3找出某種類型已安裝的文件系統(df -F)40
第3章、設備管理42
3.1磁帶的使用42
3.1.1磁帶設備的命名習慣42
3.1.1.1使用缺省密度規定驅動器號43
3.1.1.2為磁帶機指定密度43
3.1.1.3指定"不倒帶"選項44
3.1.1.4不同磁帶控制器和介質的設備名縮寫44
3.1.1.5 1/2英寸卷繞式非SCSI內接(Rack mounted)磁帶機44
3.1.1.6 1/4英寸SCSI盒式和1/2英寸前部裝入的卷繞式磁帶機45
3.1.1.7 螺線掃描磁帶機45
3.1.2讀寫磁帶的命令45
3.1.2.1拉緊磁帶45
3.1.2.2倒帶45
3.1.2.3列出磁帶機狀態46
3.2 磁帶與軟盤操作46
3.2.1 tar命令46
3.2.1.1向磁帶寫文件(tar)46
3.2.1.2列出磁帶上的文件(tar)47
3.2.1.3向磁帶上增加文件(tar)47
3.2.1.4從磁帶中析取文件(tar)48
3.2.2cpio命令48
3.2.2.1將某目錄下的所有文件拷入磁帶(cpio)48
3.2.2.2列出磁帶上的文件(cpio)49
3.2.2.3析取磁帶上所有文件(cpio)49
3.2.2.4自磁帶中析取個別文件(cpio)50
3.2.2.5軟盤的使用50
3.2.3軟驅設備名50
3.2.4ufs文件系統的軟盤50
3.2.4.1格式化ufs軟盤50
3.2.4.2自軟驅中取出軟盤51
3.2.4.3將ufs文件拷入單張格式化過軟盤51
3.2.4.4列出軟盤上的文件51
3.2.4.5向一個格式化好的軟盤上附加文件(tar)52
3.2.4.6從軟盤上拷出文件(tar)52
3.2.4.7自軟盤上拷出bar格式的文件(cpio)53
3.2.5使用多張軟盤存檔53
3.2.5.1在軟盤上創建一個ufs文件系統(newfs /dev/rdiskette)53
3.2.6pcfs(DOS)文件系統的軟盤53
3.2.6.1 格式化pcfs(DOS)文件系統軟盤54
3.2.6.2安裝pcfs軟盤54
3.2.6.3卸下pcfs軟盤54
3.3硬盤命名管理54
3.3.1硬盤命名習慣54
3.3.1.1帶有總線控制器的硬盤的使用55
3.3.1.2帶有直接驅動器的硬盤的使用56
3.3.2檢查硬盤使用狀況56
3.3.3檢查硬盤信息(Prtvtoc)57
3.3.3.1將文件存檔58
3.3.3.2將硬盤上文件拷出58
3.3.3.3修復壞塊58
3.3.3.4重新格式化硬盤58
3.3.3.5換下舊硬盤58
3.3.3.6加入錯誤表對硬盤進行格式化、分區及標記58
3.3.3.7重建文件系統(newfs)60
3.3.3.8在臨時安裝點安裝文件系統(mount)61
3.3.3.9向文件系統轉儲文件(ufsrestore)61
3.3.3.10自臨時裝入點拆卸文件系統(umount)其方法如下:62
3.3.3.11檢查文件系統的不一致性(fsck)62
3.3.3.12對恢復文件系統做0級備份62
3.3.3.13在******安裝點安裝文件系統(mount)62
第4章、文件系統管理63
4.1文件系統類型63
4.1.1磁盤文件系統63
4.1.2網絡文件系統64
4.1.3偽文件系統64
4.1.3.1臨時文件系統(tmpfs)64
4.1.3.2循環文件系統(lofs)65
4.1.3.3進程文件系統(procfs)65
4.1.3.4別的偽文件系統66
4.2 SunOS 5.x缺省的文件系統66
4.3虛擬文件系統表(/etc/vfstab)66
4.3.1 文件系統表項的建立68
4.4文件管理命令69
4.4.1普通命令語法規則69
4.4.2普通文件系統命令和特別文件系統命令手冊70
4.4.3利用文件系統命令確定文件系統類型70
4.4.4文件系統類型70
4.5如何使文件系統有效71
4.5.1安裝與拆卸72
4.5.1.1安裝與拆卸文件系統命令73
4.5.1.2查找已安裝的文件系統73
4.5.1.3安裝/etc/vfstab文件中的全部文件系統73
4.5.1.4安裝特定類型的文件系統74
4.5.1.5安裝單個文件系統(mount)74
4.5.1.6拆卸所有的遠程文件系統(umountall -F nfs)74
4.5.1.7拆卸個別的文件系統(umount)74
4.5.2自動安裝程序75
4.5.3共享服務器文件76
4.6檢查文件系統的數據一致性(fsck)76
4.6.1決定文件系統是否需檢測77
4.6.2以交互方式檢測文件系統77
4.7備份和恢復文件系統78
4.7.1用QIC-150盒式磁帶備份文件系統(ufsdump)78
4.7.1.1實現增量備份79
4.7.2恢復備份文件系統80
4.7.2.1決定使用哪一備份帶80
4.7.2.2恢復全部備份80
4.7.2.3交互式恢復文件81
4.7.2.4從備份帶中恢復單個文件( ufsrestore)83
第5章、管理網絡服務84
5.1檢查遠程系統狀態84
5.1.1確定一個遠程系統已運行了多長時間84
5.1.2確定一個遠程系統是否在運行(ping\rup\rpcinfo-p)84
5.2注冊到一個遠程系統(rlogin)86
5.3系統之間傳送文件(rcp、ftp)86
5.3.1使用RCP命令86
5.3.2使用文件傳送程序(ftp)86
第6章、管理用戶帳號和用戶組89
6.1增加和管理用戶帳號89
6.1.1增加用戶帳號89
6.1.1.1編輯Passwd數據庫89
6.1.1.2定義用戶組91
6.1.1.3建立主目錄(home director)92
6.1.1.4自動安裝目錄94
6.1.1.5用nfs安裝主目錄94
6.1.1.7定義初化文件95
6.1.1.8建立用戶的郵件帳號98
6.1.1.9建立口令99
6.1.2管理用戶帳號99
6.1.2.1修改用戶帳號100
6.1.2.2取消用戶帳號100
6.1.2.3凍結用戶帳號100
6.2設置和管理用戶組100
6.2.1設置Group數據庫中的域值101
6.2.1.1設置組名(Group Name)域101
6.2.1.2設置Group ID域101
6.2.1.3設置成員表域101
6.2.2建立缺省的UNIX用戶組101
6.2.3建立新的組102
6.2.4修改或刪除用戶組102
6.2.4.1修改某個組103
6.2.4.2刪除某個組103
第7章、UNIX的shell命令104
7.1各種shell的公共命令104
7.1.1設置某種缺省shell104
7.1.2在命令行中改變shell類型(sh,csh,ksh)105
7.1.3從shell解釋器中退出(exit)105
7.1.4******一個shell窗口(clear)105
7.2標準shell105
7.2.1標準shell的初始文件106
7.2.2定義標準shell的環境變量106
7.3 C shell106
7.3.1C shell的初始文件106
7.3.2C shell環境變量的定義106
7.3.3建立C shell的別名106
7.3.4設置C shell的歷史功能107
7.3.5使用C shell歷史功能107
7.3.6設置C shell的退格鍵(stty erase)109
7.3.7新命令的嵌入109
7.3.8Cshell歷史命令的編輯109
7.4 Korn shell110
7.4.1Korn shell的初始化文件110
7.4.2Korn shell的選擇項110
7.4.3創建Korn shell的別名112
7.4.4用Korn shell的聯機編輯器編輯命令113
7.4.5設置Korn shell的歷史114
7.4.6顯示Korn shell的歷史命令114
7.4.7使用Korn shell的歷史命令115
7.4.8編輯Korn shell的歷史命令115
第8章、管理系統116
8.1顯示系統專有信息116
8.1.1確定主機ID號(sysdef -h)116
8.1.2確定硬件類型(uname -m)116
8.1.3確定處理機類型(uname -p)116
8.1.4確定OS版本號(uname -r)116
8.1.5顯示系統配置信息(prtconf)116
8.1.6確定系統已經運行了多長時間118
8.1.7確定系統的日期和時間(date)118
8.1.8設置系統的日期和時間118
8.1.9改變系統的時區(/etc/TIMEZONE)119
8.2配置附加的交換空間(mkfile,swap)120
8.3創建一個本地郵件別名(/etc/mail/aliases)121
第9章、文件存取問題分析122
9.1 診斷與查找路徑有關的問題122
9.1.1顯示當前查找路徑122
9.1.2為Bourne和Korn shells設置路徑122
9.1.3Source Bourne和Korn shell的初始化文件122
9.1.4為C shell設置路徑123
9.1.5Source C shell初始化文件123
9.1.6檢查當前的查找路徑123
9.1.7執行一個命令123
9.2分析與權限和所有權有關的問題123
9.2.1改變文件的所有權124
9.2.2改變文件的權限124
9.2.3改變文件組的所有權125
第1章、前言
本手冊主要供Solaris系統管理員使用,所提供的內容包含SUN OS操作系統系統的安裝、環境的建立及重要文件的創建,以及系統管理員在網絡系統環境下如何建立、維護、管理網絡系統下的工作環境,還包括系統管理的日常使用命令、主要命令、文件的索引等。
本章將介紹:系統管理員的職責、了解超級用戶狀態、如何與用戶通信、啟動和關閉系統、進程管理、基本管理工具。
SunOS 5.x操作系統,是Sun公司所推出的Solaris 2.x軟件系統環境的主要組成部份,Solaris 2.x可運行于SPARC和Intel硬件平臺,是一個支持對稱式多處理機的UNIX系統環境。
系統管理員的職責
系統管理員的職責是確保一個獨立(Standalone)系統或網絡上的一組系統能正常運行(主要指軟件)。 不同領域的系統管理員,其責任也不相同,一個系統管理員可能在一個或多個領域是專家,而在別的領域卻顯生疏。
下面列出本手冊所描述的系統管理員的工作:
1、 管理設備
*磁帶機的使用
*格式化磁盤
*監視盤的使用
2、 了解服務訪問機制
*建立一個雙向調制解調器(modem)
3、 管理文件系統
*安裝或拆卸文件系統
*備份和恢復文件或文件系統
4、 管理網絡服務
*查找網絡信息
*系統間傳送文件
*管理NIS+數據庫
5、 管理打印服務
*設置一個打印客戶和打印服務器
*使用打印命令
6、 管理用戶和用戶組
*增加用戶
*刪除用戶
*改變用戶信息
*建立新組帳號
7、 了解shell
*使用Generic shell命令
*使用Bourne shell命令
*使用C Shell命令
*使用Korn shell命令
8、 管理系統
*查找系統信息
*建立局部郵件別名
*配置額外的交換空間(swap space)
*管理系統日期和時間
*識別文件存取故障
*搜索路徑的問題
*存取權和所有權問題
*網絡存取問題
*獲得存取全部文件系統和資源的權限
*與用戶通信
*關閉和啟動系統
*監視進程
本手冊的章節按照以上給出的標題順序安排,你還必須了解何時及如何進行如下管理工作: (本手冊不包含如下系統管理工作:安裝系統軟件、安裝第三廠家軟件、建立和管理網絡服務、建立和管理郵件服務、擴充和刪除硬件、管理安全性和記帳、監視系統和網絡性能。)這章其余部分將描述如何完成系統管理員的工作,并介紹一些基本命令和管理工具。
1.1了解超級用戶狀態
超級用戶是一個具有特權的用戶,它可不受任何限制地使用全部文件和命令,超級用戶有一個特定的UID(=0),這個帳號的用戶名為root(其實只要是UID為0的用戶就是超級用戶)。許多系統管理任務都必須在超級用戶下完成,如安裝和拆卸文件系統、改變文件和目錄的存取權和所有權、備份和恢復文件系統、創建設備文件,以及關閉系統。
我們可以用如下辦法進入超級用戶:
1、 在其它用戶狀態下,用不帶任何參數的su命令,并按需要鍵入root的口令。
2、 在login提示下,鍵入root及其口令。
在入進超級用戶后,shell將給出一個特殊的提示符“#”,提醒你對系統有著至高無上的存取權,做任何事情都要小心,通過查詢記錄文件/var/adm/sulog,可以跟蹤誰正在使用超級用戶帳號。
******在必要時才進入超級用戶,應該避免在超級用戶下做一般的事情。如果某項任務需要你是超級用戶,它會提示你應該進入超級用戶。當你完成必要的工作后,應立即回到一般用戶狀態。
由于超級用戶非保護的存取權限嚴重威脅系統的安全,所以root帳號總是設有一個口令,而且為了增加安全性,要經常更換口令。
1.1.1成為超級用戶(su)
僅當需要使用root權限完成一定的工作時,你才進入超級用戶,下面是從普通用戶成為root的方法:
1、 在Shell的$或%提示符下,輸入su。如果root帳號有口令的話,系統會提示你鍵入口令。
2、 鍵入超級用戶口令,如果口令正確,你就具有了超級用戶權限,系統顯示“#”提示符。
gtxa%su
Password:
#
如果想使用root本身的環境變量,鍵入su -。
1.1.2退出超級用戶狀態
要退出超級用戶狀態,就簡單地鍵入exit。
#exit
gtxa%
1.1.3以root注冊
要直接注冊成root,必須在login提示下完成:
1、 在login提示下,輸入root,于是系統提示你輸入root口令。
2、 輸入root的口令,如果口令正確,系統將出現root提示符#:
login: root
Password:
#
1.2與用戶通信
系統管理員工作的一個重要部分是與用戶通信,使用戶了解管理員所做的事情對系統功能所造成的影響,要讓用戶及時知道你所做的管理工作(如:重新引導系統,安裝新的軟件,或以某種方式改變系統環境)何時將對它們產生影響。
管理員可以口頭與用戶通訊,但***普遍的方式是:
?;在注冊時顯示當前系統專用信息.
?;用write命令直接將消息發送到某個用戶終端上.
?;用wall使用將消息發送給一個系統上的所有用戶.
?;用rwall命令將消息發送給網絡上的所有用戶.
?;通過電子郵件將消息發送一個或一組用戶.
1.2.1在注冊時顯示系統專用信息
每次用戶注冊進系統,屏幕上都會顯示當天的系統消息,這個消息存貯在文件/etc/motd中。已經注冊進系統和正在使用系統的用戶看不見此信息,可使用motd命令查看此消息,這些信息包括:操作系統版本號,系統軟件的變化,新安裝(或刪除)的第三廠家文件的名稱,或系統的調度時間表。必須確保motd文件是******的,如果motd顯示的是過時的消息,用戶會因此而失掉一個關鍵信息,消息應盡量簡短,如果其長度超過一屏,用戶就讀不到開頭部分。/etc/motd文件所在者應該是root, 而且root應是******對此文件具有寫權限的用戶。
gtxa% ls -1 /etc/motd
-rw-r--r-- root sys 49 Jan 1 1970 /etc/motd
gtxa%
注意:系統軟件安裝后,有幾個文件(包括/etc/motd 在內)的更新時間為“Jan 1 1970”這個日期是UNIX的起始日期,當你對這些文件編輯后,這個時間會隨之改變。
1.2.1.1建立日期消息
用如下步驟建立日期消息:
1、 成為超級用戶
2、 用編輯工具(如vi)編輯/etc/motd文件
3、 刪除不用的消息,輸入新的消息
4、 保存修改后的文件,這些消息在用戶下次登錄進系統時顯示
1.2.2將信息發送給單個用戶
可以使用write命令將信息發送到用戶的終端上,當使用窗口系統(如Open Windows)時,每個窗口都有一個獨立的帳號,如果用戶登錄多次,則信息會直接顯示在控制臺窗口中。
1.2.2.1發送一個短消息給一個單獨的用戶
用以下步驟將一個一次性的短消息發送給單個用戶:
1、 鍵入write username,username是用戶的注冊名。
2、 鍵入要發送的消息。
3、 輸完消息后,鍵入Control-D. 則在username用戶的控制臺窗口中顯示你鍵入的內容。
下面給出系統管理員發送消息的例子:
gtxa% write ignatz@elm
I'll come by at 12:00 to look at your problem.
gtxa%
下面是在用戶控制臺窗口顯示的消息:
Message from fred@gtxa on ttypl 11:20...
I'll come by at 12:00 to look at your problem.
EOF
1.2.2.2將作為一個文件的消息發給個別用戶
如果你想發送消息給一些用戶,建立一個消息文件,再使用帶參數的write命令來實現,其中的一個參數是消息文件名。
建立一個文件,此文件含有想要發送的消息。 鍵入write username < filename
在下面的例子中,管理員用cat命令建立消息文件:
gtxa% cat >; message
I'll come by at 12:00 to look at your problem.
gtxa% write ignatz@elm < message
write: ignatz logged in more than once...
writing to console
gtxa%
如果用戶進入了多個窗口系統,消息就顯示在用戶的控制臺窗口中。下面是顯示在控制臺上的消息格式:
Message from fred@gtxa on ttypl at 11:20...
I'll come by at 12:00 to look at your problem.
象以上顯示的那樣,鍵入的消息與顯示的消息是相同,用戶可以用write命令響應并初始化一個雙向對話,但這種對話不是真的交互式的。有兩條打開的write 路徑,兩個方向各一條,詳細介紹見write(1)說明。
1.2.3將消息發送給一個系統或網絡中的所有用戶
可以使用wall命令(write all)將消息同時發送給系統中的每個用戶,用rwall(remote write all)命令將消息同時發送給網絡中的所有用戶。
要將消息發送給系統中的所有用戶:
1、 鍵入wall
2、 鍵入想要發送的消息
3、 輸入完消息后,鍵入control-D, 消息就會顯示在系統中每個用戶的控制臺窗口中。
下面是一個實例:
gtxa% wall
System will be rebooted at 12:00
gtxa%
顯示在用戶控制臺窗口的消息:
Broadcast message from root on console...
System will be rebooted at 12:00
EOF
注意:使用rwall命令要非常小心, 因此此命令消耗大量的系統和網絡資源,要將消息發送給網絡上的所有用戶:
1、 鍵入rwall-n
2、 鍵入要發送的消息
3、 消息輸入完后,鍵入Control-D, 消息就顯示在網絡系統各個用戶的控制臺窗口中。
下面是一個實例:
gtxa%rwall-n Eng
System gtxa will be rebooted at 12:00
gtxa%
顯示在用戶控制臺窗口中的消息是:
Broadcast message from root on console...
System will be rebooted at 12:00
也可以用rwall命令將消息發送給某個系統中的所有用戶, 其命令格式為:rwall hostname
1.2.4通過電子郵件發送消息
E-mail是傳播某些系統管理信息的一種有效方式,但本手冊不介紹如何使用電子郵件,有關郵件信息的詳細說明見mail(1)、mailtool(1)和mailx(1)。
1.3啟動和關閉系統
啟動及關閉系統是系統管理工作的一個組成部分,這一節描述正常啟動和關閉系統的過程,如果系統啟動出現錯誤,參閱系統文檔中有關如何診斷引導問題。
SunOS 5.x系統軟件總處于連續運行狀態,這樣電子郵件和網絡軟件能正常地工作,但在以下幾種情況下,系統卻必須關閉或停止。
?;切斷系統電源
?;安裝一個新版本的操作系統
?;電源老化
?;系統擴充硬件
?;進行文件系統維護
1.3.1選擇init狀態
Solaris系統軟件有八個init狀態: 缺省init狀態/etc/inittab 中確定。Solaris系統軟件的缺省init狀態是運行級3。表1.1列出了7個可能的運行級別和系統在每級上的狀態。
表1.1 系統初始狀態
初始狀態功能
0掉電狀態
1.S.s系統管理員狀態(單用戶)
2多用戶狀態(不輸出資源,沒有啟動NFS)
3多用戶狀態(輸出資源,啟動NFS進程)
4替換多用戶狀態(目前不用)
5軟件重引狀態(目前不用)
6系統重引導狀態
/sbin/init 程序負責確保系統正常地運行,也可以用它來改變init 狀態的命令,還可以用init 狀態(帶用-i選擇項)作為shutdown命令的參數。以下是四種系統狀態類型:
1、 掉電(運行級0)
2、 單用戶(運行級1和s或S)
3、 多用戶(運行級2和3)
4、 重引導(運行級5和6)
若準備做系統管理工作,必須確定對系統及所需要做的工作來說哪種init狀態是合適的。
1.3.1.1查看系統運行級
要查看某系統的運行級,鍵入who -r:即顯示出運行級、日期及時間、進程終止狀態、進程id、進程退出狀態。
在下面的例子中,系統gtxa處在缺省多用戶運行級(3),日期和時間是在Feb 6 15:46,進程終狀態是3,進程id是0, 進程退出狀態是S:
gtxa%who -r
run-level 3 Feb 6 15:46 3 0 S
gtxa%
下面描述如何使用每個init狀態。
1.3.1.2使用掉電狀態,運行級0
用此級關閉系統以便安全切斷電源。
1.3.1.3使用系統管理員狀態,運行級1
當某項管理任務需要你是系統的******用戶時,使用這一級,在這級狀態下,只安裝了root和/usr文件系統,只允許使用***少的核心實用程序,發出該命令的終端成為控制臺,沒有其它用戶登錄。
1.3.1.4使用多用戶狀態,運行級2
一般操作都在此狀態下進行,在這級狀態下多個用戶可以訪問系統和整個文件系統,除了nfs服務器、syslog和遠程共享進程之外,所有的系統管理進程都在運行。
1.3.1.5使用遠程資源共享狀態,運行級3
此狀態一般操作和nfs資源共享一起有效。
1.3.1.6使用替換多用戶狀態,運行級4
此運行級目前不用。
1.3.1.7使用交互重引導狀態,運行級5
要從非缺省引導設備引導系統時,用此級。也可以用reboot -a 命令進入這個狀態級。
1.3.1.8使用重引導狀態,運行級6
使用此運行級關閉系統,使系統狀態為運行級0, 然后重引導到多用戶級(或到inittab文件中指定的缺省運行級)。
1.3.1.9使用單用戶狀態,運行級s或S
使用這一級使系統處于單用戶狀態,而所有的文件系統被安裝且可訪問。
1.3.1.10改變運行級
用telinit或init命令改變運行級,telinit命令需要一個單字符參數,此參數為init指定使用的運行級,盡管用戶可以直接用init命令,但******使用telinit命令去改變系統運行級。
1、 變成超級用戶
2、 鍵入telinit n。參數n是要使用的init狀態號。
要關閉系統
gtxa% su
Password:
# telinit 0
變成單用戶狀態:
gtxa% su
Password:
# telinit 1
要變成無nfs服務器系統管理進程運行的多用戶狀態:
gtxa% su
Password:
# telinit 2
要變到具有nfs服務器系統管理進程的多用戶狀態:
gtxa% su
Password:
# telinit 3
要關閉且重引導系統到運行級3:
gtxa% su
Password:
# telinit 6
1.3.2選擇所用的關閉命令
準備做系統管理工作時,需要確定合適的關閉命令,下面介紹如何使用系統提供的關閉使命。
/usr/sbin/shutdown
/etc/telinit and /sbin/init
/usr/sbin/halt
/usr/sbin/reboot
以上命令皆完成:初始關閉過程,殺死所有的運行進程,將新數據寫入硬盤將Solaris系統關閉為適當的運行級。
1.3.2.1 shutdown
在多用戶狀態下關閉系統,使用shutdown命令,此命令將警告消息發送給注冊到此系統的所用用戶,等待60秒鐘(缺省)后將系統關閉為單用戶狀態,可以選擇不同的缺省等待時間。
1.3.2.2 telinit和init
用telinit或init 命令可以關閉一個單用戶系統或改變此系統的運行級,init命令改變系統的運行級,telinit命令init 你想要的運行級,兩者可交替使用,但telinit命令更好,可用telinit將系統置成掉電狀態(init 0)或進入單用戶狀態(init)。
注意:telinit/init和shutdown命令是改變系統運行狀態的好方法,由于它們是用一級rc shell程序來殺死行進程, 因此用這些程序來關閉系統是***可靠的方式。
1.3.2.3 halt
當系統必須馬上停止且不必警告任何用戶時,用halt命令。halt命令在關閉系統時沒有任何延時也不給系統中的用戶以任何警告。halt命令不運行任何 rc shell程序,所以不是一個關閉系統的好方法。
1.3.2.4 reboot
系統不在多用戶狀態下,用reboot命令關閉系統并重新引導到多用戶狀態,reboot命令不警告系統中的用戶,不運行rc shell程序,所以不是一個關閉系統的好方法。
1.3.3 引導系統
如果系統電源被切斷,則開啟電源就開始了多用戶引導過程。下面說明從ok PROM提示下引導系統到不同狀態下的方法。如果PROM 提示是>;,鍵入n即顯示出ok提示。
1.3.3.1 引導到多用戶狀態
要引導系統到多用戶狀態,在ok提示符下,鍵入boot,則在缺省驅動器上啟動自動引導過程,顯示一系列啟動信息,***后系統進入多用戶狀態。
1.3.3.2 引導到單用戶狀態
要引導系統到單用戶狀態,在ok提示符下,鍵入boot -s,系統引導到單用戶狀態且提示輸入root口令:
ok boot -s
INIT: SINGLE USER MODE
Type Ctrl-d proceed with normal start-up
(or give boot password for system maintenance)
鍵入root口令,注意要繼續將系統引導到多用戶狀態,則鍵入Control-D。
1.3.3.3交互式引導
如果想對系統文件或核心作暫時改動,可以采用交互式引導,在這種情況下,可以測試所作的改動,且當出現問題時很容易恢復。
1、 在ok>;的PROM提示下,鍵入boot-a,引導過程會按交互式方式提示你。
2、 若響應回車,即缺省/kernel/unix核心引導,若不用缺省核心,則鍵入要用的核心名稱。
3、 若響應回車,即用缺省/etc/system文件,否則鍵入所用的系統文件名。
4、 若響應回車,即用缺省模塊目錄路徑,否則鍵入模塊目錄路徑名。
5、 若響應回車,即用缺省root文件系統,也可鍵入ufs從本地盤引導,或者鍵入ufs無盤客戶。
6、 若響應回車用root設備的缺省物理名,否則鍵入想使用的設備名。
7、 若響應回車則用缺省交換文件系統類型swapfs(注意:swapfs是******允許的交換文件系統類型)。
以下例子中,接受的是缺省選擇:
ok boot -a
(Hardware configuration messages)
rebooting from -a
Boot device: /sbus/esp@0,800000/sd@0,0 File and args:-a
Enter[/kernel/unix]:
(Copyright notice)
Name of system file [/etc/system]:
Name of default directory for modules [ ]:
root filesytem type [ufs]
Enter physical name of root device[/sbus@1, f8000000/esp@0,800000/sd@0,0]:
Swap filesystem type [swapfs]
configuring network interfaces: leo
Hostname: gtxa
(fsck messages)
The system is coming up. Please wait.
(More messages)
gtxa login:
1.3.3.4查看引導信息
引導信息存貯在/var/adm/messages文件中,引導完系統后若要查看這些信息,鍵入/usr/sbin/dmesg或more /var/adm/messages,則顯示引導信息。
gtxa% /usr/sbin/dmesg
Jan 13 11:22 SunOS Release 5.0 Version [UNIX(R) System V Release 4.0]
system file (etc/system) error: readline error on line 1.
root nexus=Sun 4-60
mem=16384K (0x4000000)
avail mem =14688256
Ethernet address=8:0:20:7:83:17
sbuso at obio 0xf8000000
dma0 at SBus slot 0 0x400000
exp0 at SBus slot 0 0x800000 SBus level 3(sparc ipl 3)
sdl at sep0 target 1 lun 0
/sbua@1, f8000000/esp@0,800000/sd@1,0(sd1):
sd3 at esp0 target 3 lun 0
/sbus@1, f8000000/esp@0,800000/sd@3,0(sd3):
root on /sbus@ 1, f8000000/esp@0,800000/sd@3,0:a fstype ufs swap on swapfs fstype swapfs size 1348K
le0 at SBus slot 0 0xc00000 SBus level 4 (sparc ipl 5)
zs0 at obio 0xf1000000 sparc ipl 12
zs1 at obio 0xf0000000 sparc ipl 12
dump on /dev/dsk/c0t3d0sl size 32748K
Dec 24 12:30:01 sendmail[82]:alias database out of date
Dec 24 12:30:01 sendmail[82}: AA00082: message- in=<9112242030. AA00082@gtxa. Eng. Sun. COM>;
Dec 24 12:30:01 sendmail[82]: AA00082: from=root, size=592, class=0, received form local
Dec 24 12:30:02, stat=Sent
Dec 24 12:30:58 sendmail[153]: network daemon starting
Dec 31 15:20:24 rlogind[734]: pcktread: suspeet zero len fdo at obio 0xf7200000 spare ipl 11
cgsix0 at SBus slot 1 0x0 SBus level 5(spare ipl 7)
cgsix0: screen 1152x900, single buffered, IM
mappable 1 gtxa%
1.3.3.5增加新的硬件后引導系統
當系統中增加新的硬件后,boot命令必須使用-r選擇項,以便使操作系統在引導過程中查看并裝入新的設備驅動程序。
1、 按硬件中的說明裝入新的設備驅動程序。
2、 關閉系統且安裝新的硬件。
3、 鍵入boot -r并回車,則運行重配置shell程序,裝入在模塊目錄中的所有的設備驅動程序且建立相應的硬件結點(nodes)。
1.3.3.6退回引導進程
在有些情況下,你也許想退出或中斷引導過程,具體的中斷鍵依鍵盤類型不同而有所不同,例如,可鍵入stop -A或L1 -A。在tty 終端上,鍵入Break鍵。要中斷引導過程,鍵入系統對應的中斷鍵,當中斷引導過程后,監視器將顯示ok PROM提示k
鍵入boot重新啟動引導過程,或鍵入help顯示一組幫助信息。如果終端示出>;提示,鍵入n獲得ok提示。
1.3.4關閉系統
下面介紹如何用shutdown和init命令關閉系統。
1.3.4.1關閉一個多用戶系統
在關閉一個多用戶系統之前,要通知系統中的用戶,給用戶完成一些處理過程的時間。
1、 鍵入who,顯示出注冊的所有用戶清單。
2、 鍵入ps-ef,顯示出系統活動進程表,如果系統進程允許關閉,轉到下一步。
3、 變成超級用戶。
4、 鍵入cd /,必須在根目錄下運行關閉命令。
5、 鍵入shutdown,系統要你確認是否要關閉系統。
6、 鍵入y,所有的用戶將接收到一個消息,等待60秒后,系統關閉,進入單用戶狀態且提示鍵入root口令。
7、 鍵入root口令,系統處于單用戶狀態,這時可以進行維護工作。
8、 鍵入Control-D返回到缺省運行系統級。
# cd /
# shutdown
Shutdown started Fri Aug 6 10:50:35 EDT 1993
Broadcast message from root(console) on earth Fri Aug 9 10:59:35
THE SYSTEM IS BEING SHUT DOWN NOW!!!
LOG OFF NOW OR RISK YOUR FILES BEING DAMAGED
Do you want to continue?(y or n): y
The system is down.
Changing to init state s-please wait.
INIT: New run level S
INIT: SINGLE USER MODE
Type: Ctrl-d to proceed with normal start-up,
(or give root password for system maintenance):
1.3.4.2關閉系統:可選方式
如果想改變shutdown命令的缺省功能,選擇以下所述的六種方式之一來完成。
1、 在不確認的情況下關閉系統:
*變成超級用戶
*鍵入cd /,必須在root目錄下運行shutdown命令。
*鍵入shutdown等待時間(Grace Period)
2、 為了改變shutdown等待時間(Grace Period),用以下幾步:
*變成超級用戶。
*鍵入cd /,必須在root目錄下運行shutdown命令。
*鍵入shutdown -t .系統在等待用戶確定的秒數后關閉。
*下面是改變等待時間(Grace Period)例子:
# cd /
# shutdown -g 120
3、 關閉且重新引導多用戶系統
*變成超級用戶。
*鍵入cd /, 必須在root目錄下運行shutdown命令。
*鍵入shutdown -i6 將一條消息發送給所有的用戶且執行re6 shell程序;系統關閉為掉電狀態,然后恢復到多用戶狀態。
4、 關閉單用戶系統
要關閉一個單用戶系統,鍵入telinit 0(或init 0)命令運行shell程序使系統很快地關閉,沒有警告信息。
5、 關閉且重新引導單用戶系統
要關閉且重新引導單用戶系統,鍵入telinit 6 (或init 6)。此時系統信息寫到硬盤上,殺死所有的活動進程且系統回到掉電狀態。系統再重新引導到缺省級(通常是多用戶級)。
6、 緊急關閉系統
要緊急關閉一個系統,鍵入uadmin 2 0. 將系統信息寫到硬盤上,系統回到掉電狀態,且顯示PROM提示。
1.4監視進程
某一時刻在系統中運行的程序稱為進程。用戶可以監視進程的狀態,控制一個進程獲得的CPU時間,掛起或終止一個進程的執行。
ps命令是獲得進程信息的主要工具??梢杂胮s和grep命令查尋所需要的信息,可以確定哪些進程正在(或沒有)運行,而且可以獲得一個進程的詳細信息,這些信息包括:
*PID<進程ID>;
*UID<用戶ID>;
*優先級
*控制終端
*存貯器的使用
*CPU時間
*當前狀態
ps命令反映的是命令被鍵入時的系統狀態,因此當你正在監視系統時間的活動情況時,必須明白當你讀結果時它們已經有點過時,表1.2列出了ps(1)手冊。
表1.2 ps 命令***常用的選擇項目
可選項說明
-e 報告所有的進程
-l 生成一個長報告,此報告中包括除STIME之外的所有域。
-f 顯示進程啟動程序的全路徑名
1.4.1 ps命令報告的內容
當鍵入ps-e時,可獲得如下所示的信息
gtxa% /usr/bin/ps -e
PID TTY TIME COMD
0 ? 0:02 sched
1 ? 0:01 init
2 ? 0:00 pageout
192 ? 0:00 sac
79 ? 0:10 inetd
75 ? 0:01 in route
136 ? 0:04 automoun
143 ? 0:01 crom
123 ? 0:01 statd
104 ? 0:01 rpcbind
106 ? 0:01 rpc. rwal
108 ? 0:01 rpc. ruse
110 ? 0:01 rpc. spra
113 ? 0:01 ypbind
115 ? 0:00 keyserv
117 ? 0:01 kerbd
127 ? 0:02 lockd
251 pts/0 0:00 ps
165 ? 0:00 scndmail
193 ? 0:01 ttymon
174 ? 0:03 sysylogd
156 ? 0:01 lpsched
209 ? 0:02 in rlogi
211 pts/0 0:03 csh
164 ? 0:00 lpNet
gtxa%
各欄內容說明如下:
*PID: 進程標識號
*TTY: 啟動此進程(或其父進程)的終端。如果進程沒有控制終端這一欄顯示一個問號>;──顯示問號的進程常常是系統進程。
*TIME: 進程所用的CPU時間
*COMD: 產生此進程的命令名,注意:ps-e 命令僅顯示出文件名的頭八個字符。
當鍵入ps -el時,可看到如下的顯示內容:
gtxa% /usr/bin/ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD
19 T 0 0 0 80 O SY f010f1c8 0 ? 0:02 sched
8 S 0 1 0 251 0 20 fflad800 48 fflad9c4 ? 0:01 init
19 S 0 2 0 0 0 SY fflad000 0 fflad07d ? 0:00 pageout
8 S 0 192 1 49 1 20 ff1f7000 238 ff2de348 ? 0:00 sac
8 S 0 79 1 80 1 20 ff232800 258 f010fla4 ? 0:10 inetd
8 S 0 75 1 80 1 20 ff249000 327 ff2de448 ? 0:01 in route
8 S 0 136 1 80 1 20 ff2c3000 287 f010fla4 ? 0:04 automoun
8 S 0 143 1 80 1 20 ff293000 270 f010fla4 ? 0:01 cron
8 S 0 123 1 49 1 20 ff28e800 258 f010fia4 ? 0:01 statd
8 S 0 104 1 80 1 20 ff25a000 301 f010fla8 ? 0:01 rpcbind
8 S 0 106 1 77 1 20 ff258800 272 f010fia4 ? 0:01 rpc.rwal
8 S 0 108 1 80 1 20 ff260800 272 f010dla4 ? 0:01 rpc.ruse
8 S 0 110 1 78 1 20 ff266800 272 f010fla4 ? 0: 01 rpc. spra
表1.3是ps -el長報告中各域的說明表
域說明
F 十六進制標示,加在一起表示進程目前的狀態
00進程已經終止,它對應的進程表項已空
01此進程是一個進程且總是在內存中
02此進程正被它的父進程跟蹤
04此進程在被它的父進程跟蹤,且已經停止運行
08此進程不能用信號******
10進程正在內存中且在一個文件完成之前被鎖住
20此進程不可換出
S 進程的當前狀態,由下列字母之一表示:
O正在處理器上運行
S睡眠;等待IO事件完成
R運行就緒。
I空閑狀態,進程正在創建
Z僵尸狀態;進程已經終止且父進程不再等待,但此死進程仍留在進程表中。
T因父進程正在跟蹤它而停止執行
X等待獲得更多的內存
UID 進程所有者的用戶ID號
PID 進程標識號
PPID 父進程的標識號
C 進程所用的CPU時間(該進程所用CPU時間的百分比估計值)
PRI 進程調度優先級,數字越大表示優先級越低
NI 進程的nice數,影響其調度優先級,提高進程的nice數意味著降低其優先級、使用更少的CPU時間
SZ 進程所需虛存數量,它很好地表示出進程對系統存貯器的要求。
TTY 啟動此進程(或父進程)的終端,或者是“?”表示無控制終端(通常表示系統進程)。
TIME 進程從啟始到目前所使用的CPU時間總和
COMD 產生此進程的命令。
1.4.2使用ps報告
當需要哪些進程或系統管理進程正在運行時,使用ps -e選擇項,如果還想得到過程的更詳細信息,用ps -el選擇項。各選擇項的詳細說明參考ps(1)命令手冊。
下面是如何發現潛在問題的指南:
*查看有沒有由同一用戶所有的相同作業,若有,這可能是由于某用戶運行了啟動一組后臺作業的shell程序,但沒有等待作業終止,找用戶談談,看是否是這種情況,如果必要,用kill命令殺死其中一些進程,有關殺死一個進程的詳細介紹參見后面幾節。
*查看TIME域,看哪些進程占用了大量的CPU時間,這樣的進程可能導致死循環。
*查看C域,找出占用大量CPU時間且不重要的進程,如果認為此進程確實不值占用如此多的CPU時間,可以用priocntl命令降低它的優先級,有關priocntl命令的詳細信息,參考prioentl(1)手冊。
*查看SZ域,找出占用太大內存的進程。如果某個進程占用了過于大的內存,將它殺死,如果系統中有許多進程都需要大量內存,則可能需要擴充內存。
*查找占用CPU時間越來越多的失控進程,可以用帶-f可選項的ps命令查看其超始時間(STIME),也可直接看其TIME域所指的CPU累計時間。
1.4.3殺死進程
有時用戶需要徹底地******一個進程,這時用kill命令,kill命令的格式為kill-,此處是一個數或一個名稱。
注意:僅當進程不能正常退出時用kill命令。
有時用kill命令后進程仍未死掉,***常見的三種情況:
?;進程退出前正在等待一個設備(如磁帶機)完成某種操作。
?;進程正在等待由于nfs出現問題而無效的資源,在這種情況應該用kill-QUIT命令來殺死一個進程。
?;進程處于僵尸態,正如ps報告的消息所顯示,僵尸進程已經釋放了它所占資源,但還沒有接收到父進程的回應,一般接收到回應后刪除對應的進程表項,在下次啟動系統時,僵尸進程被消除,僵尸(Zombies)進程不影響系統性能,所以用戶不必刪除它們。
要殺死一個進程:
1、 變成超級用戶,要殺死一個非你擁有的進程,你必須成為超級用戶。
2、 鍵入ps -e,將顯示出一組進程,使用******欄的PID(進程ID)號作為下一步的輸入,如果你知道是哪個進程出了問題,則可以鍵入:
ps -e | grep 來找到其進程ID
3、 鍵入kill-15 ,若僅鍵入kill,無參數,則缺省的信號是15。
4、 鍵入ps -e,檢查進程是否已經終止,如果進程還存在,則到第5步。
5、 鍵入kill-9 ,這個進程應該被終止。 鍵入man -s5 signal,查看kill所使用的信號描述。
例如:如果gtxa系統上的Open Windows 死了,你必須從另一個系統遠程注冊來殺死此進程。
elm% rlogin gtxa
Password:
gtxa% ps-e │ grep openwin
PID TTY TIME COMD
2212 pts/0 0:00 openwin
2213 pts/1 0:00 grep openwin
gtxa # kill 2212
gtxa # exit
gtxa% logout
elm%
1.5基本管理工具
Solaris系統軟件提供以下兩種管理工具:
*一組通用的操作系統命令
*具有圖形用戶接口的管理工具(Administration Tool)。
1.5.1經常使用的命令
下面幾節簡單地介紹基本的Solaris命令,你很可能會使用它們作為系統管理例程的一部分,更詳細的介紹參見第二章中的“Basic OS Commands”及附錄A列出的SunOS 4.x命令與SunOS 5.x命令的對照表。
1.5.1.1在文件系統中移動
Solaris系統軟件是有一個層次結構的文件系統,當管理系統時,你需要了解目前處于文件系統的哪個位置、如何轉到不同的目錄。
1.5.1.2查看在文件系統中所處的位置
要知道目前處于文件系統的哪一層,鍵入pwd。pwd(打印工作目錄)命令顯示當前目錄:
gtxa&pwd
/etc
gtxa%
1.5.1.3改變目錄
要改變目錄,鍵入cd 。cd(改變目錄)命令使你進入所鍵入的目錄中:
gtxa% cd /usr
gtxa%% pwd
/usr
gtxa%
如果僅鍵入cd而沒鍵入路徑名,你就返回注冊目錄下。
1.5.1.4查看文件的有關信息
用ls命令可以顯示目錄內容以及文件的許可權、符號鏈、所有者、組、文件長度(字節數)、修改日期及時間和文件名,許多用戶存取文件出錯的原因,追根底在于擁有不正確的許可權或所有權,有關此類問題的詳細說明見第10章“識別文件存取問題”。
1.5.1.5顯示文件信息
要顯示某個文件的有關信息,鍵入ls -1 ,則顯示許可權、符號鏈、所有者、組、文件長度(字節數)、修改日期及時間和文件名。
要看目錄中的全部文件,鍵入ls -1a,有關ls的選擇項清單可參見命令手冊。
gtxa% ls -1 /etc/passed
-r--r--r--lrootsys659 Feb 24 17:28/etc/passed
gtxa%
1.5.1.6查找一個文件
要從根目錄開始搜索尋找到一個文件, 就鍵入find $HOME -name -print. $HOME變量表示查找從根目錄開始。 -name選項表示要查找指定的文件名,-print 選項要求顯示出查找的結果。如果沒找到中指定的文件則系統回到提示符狀態。
下面例子是查找文件core:
gtxa% find $HOME -name core -print
/home/ignatz/core
gtxa%
表1.4 find命令的可選項
可選項 說明
-fstype 查找指定類型的文件系統,通常用ufs或nfs中的文件
-prune 限制搜索到指定的目錄
-nouser 查找不屬于/etc/passwd中用戶的文件
-nogroup 查找不屬于/etc/group中組的文件
-atime 查找在***后天被存取過的文件
-mtime 查找在***后天被修改過的文件
-ctime 查找在***后天被改變過的文件, 這種改變包括改變文件的屬性。如鏈接數、所有者或組
-Xdev 限制只對一個文件系統搜索
有關find命令可選項的完整說明見find(1)。
1.5.1.7查看一個文件的類型
某些情況下需要確定一個文件的類型,如要查看一個文件的類型,則鍵入file 。輸出結果是指定文件的文件類型。
例如:如果一個用戶試圖執行一個無執行許可權的ASCII 文件或空文件,查看文件的類型可以得知此文件是ASCII 文件或空文件而不能執行。
以下是空文件的例子:
gtxa% file junk
junk: empty file
gtxa%
以下是ASCII文件的例子:
gtxa% file junk
junk: ascii text
gtxa%
以下例子中,文件是具有可執行許可權的文本文件,所以file命令報告該文件可執行,且是文本文件。
gtxa%chmod 777 junk
gtxa% file junk
junk: commands text
gtxa%
你也可以用ls -1命令來查看某文件是否有執行許可權。
可以用file *命令查看一個目錄中全部文件的類型。文件按字母順序列出,后面跟文件類型:
gtxa% file *
coterie: directory
course: ascil text
dead. letter ascii text
ksyms English text
people: directory
personal: directory
showrev: ascii text
status: directory
text: directory
toodo: ascii text
gtxa%
1.5.1.8查看文件中的信息
用grep和egrep命令可查找文件或命令輸出的某些特定信息。
1.5.1.9查找文件中的字符串
鍵入grep 可查找文件中的指定字符串,且顯示文件可包含該字符串的行。
例如:查找passwd文件中包含csh的行:
gtxa% grep csh /etc/passwd
ignatz: 6693: 10:Ignatz 64607:/home/ignatz: /bin/csh
fred: 14072:10:Fred Lux:/home//home/fred:/vin/csh
gtxa%
同時查找多個文件的方法是:在命令中輸入多個文件名,它們之間以空格分開;或者用無字符代文件名(或與文件名一起使用)。
為顯示出不包含某字符串的行,可以鍵入grep -v 。
查找具有某種模式的輸入行,可以將grep以管道的方式與許多管理命令結合起來使用。
例如:要查找某一用戶當前的全部進程,可以將ps命令和grep結合起來使用,并查找該用戶名,鍵入ps -e│grep 。即顯示該用戶名的清單??捎孟旅娴拿畈檎襉pen Windows的全部進程:
gtxa%ps -e │grep openwin
PID TTY TIME COMD
2212 pts/0 0:00 openwin
gtxa%
1.5.1.10查看文件
毫無疑問,人們要花很時間查看文件的內容,需要查看整個文件時可以用more命令,當只需看文件尾的內容時(如日志(log)文件),可用tail命令來顯示文件的***后10行,當重要信息在文件頭時,可用head命令顯示文件的前10行。
1.5.1.11瀏覽文件
可以鍵入more 來瀏覽文件,文件一次只顯示一屏,按空格鍵顯示下一屏。當你用more瀏覽文件時,若想查找文件中的某個字符串,可以鍵入/。屏幕滾到你要查找的字符串的位置, 并在窗口頂部顯示要找的字符串的“... skippin”信息。如果未找到,則屏幕不滾動并顯示出“Pattern not found”。
例如:要查找/etc/mail/aliasses文件中的Local aliases串, 可鍵入/Local aliases.
/Local aliases
... skipping
# # # # # # # # # # # #
# Local aliases below #
# # # # # # # # # # # #
注意:在more命令中一定要用正確的大小寫字母。上例中,如果你鍵入了/local aliases,則會告訴你沒有找到。
為了查找下一個匹配的字符串,鍵入n。鍵入q退出more命令,顯示shell 提示符。
為顯示shell intr 字符,可鍵入stty -a,就顯示stty的設備清單,下列中:^h(退格鍵)是刪除字符:
gtxa%
speed 9600 bau;
rows=35; columns=80; ypixel =9; xpixels=0;
eucw 1:0:0:0, scrw 1:0:0:0
intr=^c;quit=^│; erase=^?;kill=^u
eof=^d; eol+^; eo12=;swtch=;
start=^d; stop =^s;susp=^z;dsusp=^y;
rprnt=^r; flush =^o; werase=^w; lnext =^V;
parenb-parodd cs-cstopb hupcl cread-clocal -loolk -
crtscts-parext
-ingbrk btkint ignpar-parmrk-inpck istrip -inncr -
igncr icrnl-iucle
ixon-ixany-ixoff imaxbel
isig icanon-xcase echo echoe echok-echonl-noflsh
-tostop echoctl -echoprt echoke -defecho -flusho -
pendin inxten
opost-olcuc onler -onocr -ofill-ofdel
1.5.1.12查看文件尾
若要查看文件尾,鍵入tail , 顯示出文件的***后10行(缺省情況),下例顯示了/etc/lp/system文件尾:
gtxa% /usr/bin/tail /etc/lp/system
#
# Kepler:-: s5: -:n:10:-:-:SVR4.0 OS
# fubar:-bsd:10:n-:-:BSD OS
# Galialeo:-:s5:-30:10-:-:
# # # # #
billboard-:bsd:-:n:10:-:-:
homeboyl-:s5:-:n:10-:-:
regal:-:s5:-:n:10-:-:
mrplod:-:s5:-:n:10:-:-:
gtxa%
缺省時,head和tail命令顯示10行,可靠用-n任項來控制顯示行數,用你要顯示的行數代替n。例如:要顯示***后20行, 可鍵入tail -20 。
注意:tail命令最多能顯示4096字節(大約400行)。
1.5.1.13查看文件頭
若要查看文件頭,可鍵入head這時顯示出頭10行
下例中顯示/etc/password文件:
gtxa% /usr/bin/head /etc/pased
rood:0:1:0000-Admin(0000):/:sbin/sh
daemon:1:1:0000-Admin(0000):/:
bin:2:2:0000-Admin(0000):/var/adm:
sys:x:3:3:0000-Admin(0000):/:
adm:x:4:4:0000-Admin(0000):/var/adm:
lp:x:71:8:0000-lp(0000):/usr/spool/lp:
smtp:x:0:0:mail daemon user:/:
uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:
nuucp:x:9:9:0000-
uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
gtxa%
1.5.1.14改變文件的所有權和許可權
用戶的許多問題可能是由文件的所有權和許可權問題產生的,用ls命令可查看文件的所有權和許可權,如果要改變它們,可用:chown、chmod和chgrp命令。
*改變文件所有權
你必須擁有一個文件或目錄(或者你是超級用戶)你才能成為屬主
1>;鍵入ls -1 。文件的屬主顯示在第三列中
2>;進入超級用戶
3>;鍵入chown . 所有權按賦予指定的新屬主文件。
gtxa% ls -1 quest
-rw-r--r--1fred staff 6023 Aug5 12:06 quest
gtxa% su
Password:
# chown ignarz quest
# ls-1 quest
-rw-r--r--lignatzataff6023 Aug5 12:06 quest
#
更詳細的介紹請參見第10章。
* 改變文件的許可權
表1.5列出的設置文件許可權的8進制值。可以用三個這樣的數來分別設置屬主、組和其它用戶的許可權。例如:644 說明屬主有讀/寫權限,同組用戶和其它用戶有只讀權限。
表1.5 文件權限的八進制值
值 說明
0 無權限
1 只可執行
2 只可寫
3 可寫、可執行
4 只讀
5 可讀、可執行
6 可讀、可寫
7 可讀、寫、執行
1>;鍵入ls -1 。列表顯示出文件當前的權限。
2>;鍵入chmod 。改變文件的權限變為你指定的值。
注意:可以用元字符(如* ?)替換文件名,或與它們一起使用來更改多個文件或一個目錄中所有文件的權限。
下例中,將一個文件權從666改為644。
gtxa% ls - 1 quest
-rw-rw-rw-lignatzstaff 6023 Aug5 12:06 quest
gtxa% chmod 644 quest
gtxa%ls -1 quest
-rw-r--r--lignatzstaff6023 Aug5 12:06 quest
gtxa%
1.5.1.15改變文件組
若要改變文件組,鍵入chgrp 。改變指定文件的組ID
$ls -lg junk
-rw-r--r--l other 0 Oct 31 14:49 junk
$chgrp 10 junk
$ls -lg junk
-rw-r--r--l ataff 0 Oct 31 14:49 junk
$
組ID號在Group數據庫或本地/etc/group文件中定義, 關于組的詳細信息請參見第7章。
1.5.1.16設置或顯示系統環境
shell使用shell初始化文件中給出的一組說明來維護環境,用戶也可以直接發命令給shell來修改shell從環境變量中得到有關環境的信息。Solaris系統軟件提供7個缺省的環境變量。
*PSI:定義shell提示符。Bourne和Korn shell的缺省提示符是$。C shell的缺省提示符是%,任何shell中root的缺省提示符皆是#。用戶可以在.profile,.login 或.cshrc 文件中下義不同的shell提示符。
*HOME:定義用戶主目錄的******路徑。作為注冊進程的一部分,自動定義HOME的缺省值,并且設置為/etc/passwd 文件中說明的注冊目錄。當鍵入cd命令且無參數時,shell轉到HOME 變量所確定的目錄之下。
*LOGNAME:定義用戶的注冊名。作為注冊進程的一部分,LOGNAME的缺省值被自動定義且設置為/etc/passwd文件中說明的注冊名。
*PATH:列出一組目錄。當用戶敲入命令后,shell 按順序從這些目錄中查找要執行的程序。如果一個命令所在的目錄不在該查找路徑中,則用戶必須鍵入該命令的全部路徑。做為注冊進程的一部分,PATH的缺省值是按.profile(Bourne和Korn shell)或.cshrc(C shell)文件中的說明設置。查找路徑的順序是非常重要的。當同名的命令在不同的目錄存在時,執行的是******個找到的命令。例如:假設PATH(以Bourne 和Korn shell方式)定義為PATH =/bin:/usr/bin/:usr/sbin:$HOME/bin,在usr/bin和/home/jean/bin目錄中均有名為sample的程序,當用戶不鍵入路徑,而只是鍵入sample命令時,則執行/usr/bin目錄中的sample程序。
其它環境變量包括:
*LPDEST:設置用戶的缺省打印機
*OPENWINHOME:設置Open Wimdows可執行碼的路徑
*DESKSET:設置DESKSET的可執碼的路徑
*LANG:設置本地語言,可能值是:english、japanese、German、French、Swedish和Italian等
*HZ:設置Borne和Korn shell的歷史
*TZ:設置時區
*SHELL:設置make,vi或其它工具所使用的缺省shell
*MAIL:告訴shell到哪去查找新的郵件
*MANSECTS:設置手冊的有效章節
用戶和系統管理員可另外定義自己使用的環境變量,當用戶從shell命令中定義環境變量時,只要用戶不退出shell,則定義的環境變量就一直起作用。退shell,則不再起作用??蓪ⅰ?*****”環境變量存在.profile、.login或.cshrc文件中,定義環境變量的語法依不同的shell而不同。
1.5.1.17定義Bourne和Korn shell環境變量
若要定義Bourne和Korn shell環境變量,鍵入=;export .
$HZ=100;export HZ
$
1.5.1.18定義C shell環境變量
若定義C shell 環境變量,鍵入setenv .
%setenv DISLAY rogue:0
%
1.5.1.19顯示環境變量的設置
若要顯示出當前的環境變量設置,鍵入env。
$env
HOME=/home/irving
HZ=100
LOGNAME=irving
MAIL=/var/mail/irving
MANSECTS=\1:1m:1c:1f:1s:1b;2\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8
PATH=/usr/bin
SHELL=/bin/sh
TERM=sun
TZ=ESTS5EDT
$
1.5.1.20使用PATH變量
PATH環境變量是非常重要的。當用戶執行一個帶有全路徑名的命令,shell按給定的全路徑名去查找命令,當用戶只給出命令名時,shell就按PATH環境變量給定的路徑順序去查找目錄,若在某一目錄中找到該命令時,就執行它。
缺省的根PATH(sbin:/usr/sbin:/usr/bin:/etc)是由系統設置的,但許多用戶還在上面添加一些別的命令目錄,用戶的許多問題,如有關設置環境使用命令或工具的不正確版本等,常常是由于路徑設置不正確所產生的。
1.5.1.21設置Bourne和Korn shell路徑
Bourne與Korn shell的路徑是在用戶的$HOME/.profile 文件中如下設置的:
PATH=.:/usr/bin:/$HOME/bin
1.5.1.22設置C shell路徑
C shell的路徑是在用戶的$HOME/.cshrc 文件如下設置的:
set path=(./usr/bin $ home/bin)
更詳細說明請參閱有關手冊和第10章。
1.5.2使用管理工具
管理工具是Open Windows的一個具有圖形用戶接口的工具。它用來管理主機系統和/etc下的17個數據庫。使用這一管理工具可以管理用戶和組,可以管理NIS+數據庫和本地/etc目錄下的文件。
第2章、基本OS命令
本章將介紹:查找用戶信息、查找環境信息、創建和編輯文件、命令組合和輸出定向、使用手冊、查找硬盤信息 。
本章解釋基本的操作系統命令,提供查找有關用戶和系統環境信息的方法,同時講述建立和編輯文件、命令組合、輸入重定向,顯示手冊以及查尋基本磁盤信息的各種方法。
2.1查找用戶信息
在管理系統時,經常需要知道誰在使用系統及他們在做些什么。本節描述了解用戶信息的命令:who、finger、rusers -1、whodo、id等。
2.1.1確定系統中有誰注冊
(who、finger、rusers -1、whodo、id)可以使用上述四個命令之中的一個來發現誰注冊進入系統。每個命令還顯示各種不同附加信息。
2.1.1.1使用who命令
who命令顯示注冊進入系統的用戶名單,注冊的tty端口,以及日期和時間,如果某用戶是遠程注冊的,那么本命令還顯示該用戶的遠程系統名,使用who命令的方法是:鍵入who。
在下例中,用戶irving是遠程注冊的,用戶ignatz是系統gtxa 的本地用戶。
gtxa% who
irving pts/1 Oct 31 14:33(elm)
ignatz console Oct 31 12:22
gtxa%
2.1.1.2使用finger命令
finger命令顯示注冊進入系統的用戶注冊名,同時顯示用戶全名(取名/etc/passwd文件對應項的information域),tty端口,星期幾,注冊時間,如果是遠程注冊的用戶,還顯示遠程系統名。使用finger命令的方法是:鍵入finger
在這個例子里,用戶winsor從系統castle遠程注冊
gtxa%flogin @openet
openet%finger
Login Name TTY Idle When Where
Winsor Janice Winsor pts/0 11 Thu 09:59 castle
gtxa%
2.1.1.3使用rusers -1命令
rusers -1(遠程用戶注冊)命令,顯示從遠程系統注冊的用戶名清單,同時顯示用戶注冊的系統名,tty端口,日期,登錄時間以及空閑時間(idle time)。如果主機不空閑,那么***后一列不顯示,使用本命令的方法是:鍵入rusers-1后再回車。
gtxa%rusers -1
Sending Broadcast for rusersd protocol version 3...
Sending Broadcast for rusersd protocol version 2...
jah caps:consloe Mar 3 13:03 22:03
amber facehole: console Mar 2 07:40
sebree ondine: consloe Mar 2 10:35 14
tut cairo: consloe Mar 2 16:48
jrt cairo: ttyp5 Mar 2 16:20 47:54(gap)
ramseyis mowthelawn: consloe Mar 2 16:33 28
ramseyis mowthelawn: ttpy6 Mar 3 14:20 25:14
(:0.0)
(More logins not shown)
gtxa%
2.1.1.4使用whodo命令
whodo命令顯示日期、時間和系統名。它為每一個注冊的用戶顯示設備名、UID、注冊時間以及一個與此UID相聯系的活動進程表。此表的內容包含設備名、PID、使用的CPU時間(分、秒)以及進程名。
鍵入Whodo,可以看到誰注冊了,以及注冊者在做什么。
gtxa%whodo
Tue Mar 12 15:483 1992
SunOs
tty09 men 8:51
tty09 28158 0:9sh
tty52 bdr 15:23
tty52 21688 0:05sh
tty52 22788 0:01whodo
tty52 22017 0:03vi
tty52 22549 0:01sh
2.1.2檢查用戶的用戶號和組號(id命令)
使用id命令可以顯示注冊用戶的用戶id和組id號,當用戶不能訪問他們認為屬于自己的文件時,使用這些信息來查找錯原因,據此信息也可知道用戶所屬的組。使用id命令時,用戶先注冊,然后鍵入id命令。如果uid和uid與出現問題的文件的uid或gid不匹配,就需要改變文件的屬主或組,或者將用戶加入相應的組中。詳見第5章。
gtxa%id
uid=6693(winsor)gid=10(staff)
gtxa%su
Password:
#id
uid=0(rood) gid=1(other)
#
2.2查尋環境信息
每個系統都有一個運行環境,這些環境說明在用戶初始化文件標準shell和Korn shell的.profile或C shell的.cshrc和.login中定義,也可通過shell直接定義環境變量。環境變量可以規定諸如用戶主目錄,注冊名,缺省打印機,電子郵件地址以及訪問Open Windows環境的路徑。本講講述如何查到環境變量的設置。這方面的更詳細信息請見第8章。
為了顯示用戶的環境變量設置,鍵入env命令。這樣系統地顯示出環境變更的設備清單,關于環境變量的缺省設置值及如何設置環境變量,請見第1章的有關內容。
gtxa%env
HOME=/
PATH=:/home/ignatz:/usr/bin:
/home/ignatz/bin:/bin:/home/bin:/etc:/usr/etc
LOGNANME=ignatz
HZ=100
TZ=PST8PDT
TERM=sun
SHELL=/bin/csh
MAIL=var/mail/ignatz
PWD=/
MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3
c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8
gtxa%
2.3創建和編輯文件
本節描述如何使用cat、touch、cp、mv、Text Editor和vi命令來創建和編輯文件。
2.3.1使用cat命令
使用cat命令可創建短文件或附加少量文本信息到一個已存在的文件末尾。用cat命令創建文件可以:
1、鍵入cat ;
2、錄入文本內容;
3、鍵入回車;
4、鍵入Control-D。
文本被存盤,shell提示符重新出現。
用cat命令將文本附加到已存在的文件上可以:
1、鍵入cat ;
2、錄入內容;
3、鍵入回車;
4、鍵入Control-D。
文體被存盤,shell提示符重新出現。
2.3.2使用touch命令
touch命令將每個文件的訪問和改動時間設為當前時間,如果文件不存在,就創建一個新文件??梢杂胻ouch命令創建一個空文件來檢查允許權和屬主,或創建一個文件用于以后錄入文本。
要創建一個空文件,只需鍵入touch 這樣一個新的空文件就創建出來了,如果此文件已存在,那么文件的修改時間就變為當前的日期和時間。
gtxa%ls -1 junk
junk: No such file of directory
gtxa%touch junk
gtxa%ls -1 junk
-rw-r--r--livringstaff 0 Sep 11 15:06 junk
gtxa%
2.3.3文件拷貝(cp)或改名(mv)
可以通過一對一已存在的文件進行拷貝或改名來創建一個新文件。
拷貝已存在的文件的方法是:鍵入cp ,這樣就得到了原文件的拷貝,而且保留了原來的文件。
mv
原文件被改名,原名文件就不再存在。
gtxa%mv quest /tmp/quest。old
gtxa%
2.3.4文本編輯器的使用
可以使用Open Windows的文體編輯來創建和編輯文件。然而普通用戶在使用文本編輯器來編輯具有根允許權限(root pemissions )的文件時可能會出現一些問題。
進入Open Windows工作區的主菜單中選擇programs,再在programs菜單中選擇Editor來打開文體編輯器,也可以在命令行鍵入:textedit &來打開文體編輯器。打開之后,顯示一個文本編輯器窗口。進行編輯時,可使用鍵盤上Cut、Copy、Paste、Undo鍵來加快文本的編輯速度。
2.3.5 vi的使用
全屏幕編輯器vi,通常是由系統管理員編輯文本文件。有專門的一些書講述vi使用法。本節僅提供其中***常用的編輯命令供用戶參考。只需鍵入 vi 。就可啟動vi,如果文件不存在,那么就打開一個新文件,當存入內容時,此新文件就創建出來,如果文件已經存在,則在啟動完vi以后,就在屏幕上顯示此文件的開頭一部分內容。
表2.1一些基本的vi命令
功能命令
不存盤退出:qi
存盤:w
存后退出:wq
存后退出ZZ
左移一字符h
右移一字符i
上移一行k
下移一行j
移到文件尾G
插入文本(插入方式)v(文本)ESC
在光標后附加文本a(文本)ESC
在行尾附加文本A(文本)ESC
如何退出命令方式ESC
刪行dd
刪字符x
刪詞dw
在上一行開始加入新文本O
在下一行開始加入新文本o
拷貝一行到緩沖區Y
將緩沖區內容置于當前光標之前P
將緩沖區內容置于當前光標之后p
2.4命令組合及輸出重新定向
SunOS 5.0系統允許以多種方法組合命令,本節講述命令組合的三種方法。
2.4.1在同一命令行里鍵入多個命令
在命令之間用分號(;隔開,就可以在同一命令行中鍵入多個命令,例如,可以用cd /usr/bin;ls命令先轉到一個目錄中,再列出此目錄中的目錄和文件,另外一個例子是為Bourne shell設定環境變量再輸出(export)該變量。
PATH=。:/usr/bin:$HOME/;export PATH
2.4.2輸出重新定向(<>
除非另外說明,命令結果通常顯示在屏幕上,使用重新定向符(“<”和“>;”),可以將輸出結果重新定向,例如:將結果存入一個文件而不是將它顯示在屏幕上,只需使用重新定向符“>;”,指示shell將內容放入一個文件,下面的例子中,date命令的輸出被重新定向到Sample.file文件中:
gtxa%date >; samle.file
gtxa%
下面是Sample.file的內容:
gtxa%more sample.file
Tue May 26 13:26:59 PDT 1992
gtxa%
也可以重新定向輸入。例如,將一個文件的內容郵件寄到用戶ignatz@gtxa,鍵入mail igzatz@gtxa < report.file,report.file文件就通過電子郵件發給ignatz@gtxa。
2.4.3組合命令(|)
使用管道操作符(|)來聯結兩個或更多的命令,管道操作符把前一命令的輸出作為后一命令的輸入。有許多方法可以將命令用管道線組合起來,本節只舉兩例:
鍵入man cat│lp再回車,可以打印cat(1)手冊。上述手冊就不顯示在屏幕上,而是將輸出內容傳給lp命令,使之在缺省打印機上打印出來。
將ps -ef命令用管道(|)與grep命令聯結起來,可以在進程表中找出某個命令對應的過程,輸出結果顯示在屏幕上。例如,顯示Open Windows的進程信息:
gtxa%ps -e│grep openwin
260 ? 0:00 openwin
gtxa%
如果想要打印上述信息,可以另加管道命令(|lp )于上述命令之后:
gtxa%ps-ef │grep openwin │lp
request id is castle─51(request id is cstle ─51
(standard input)
gtxa%
2.5使用手冊
SunOS 5.x提供聯機參考手冊,手冊被分為不同的節(section),同一類型的命令組成一節。例如,大多數用戶命令歸并為(1)節,系統管理歸并為(IM)節。手冊可以存放在本地系統上,也可以在服務器上,本節描述如何顯示手冊,及如何找到某條命令在哪一節。
2.5.1顯示手冊(man)
顯示手冊,只需鍵入man ,手冊頁即顯示出來。
gtxa%man grep
grep(1) USER COMMANDS grep(1)
NAME
grep -search a file for a pattern
SYNOPSIS
grep [-bchilnsvw] limited -expression
...
2.5.2找命令節號(whatis、man)
有些命令的名字可以出現在幾個章節中,此時可以使用whatis找到命令在手冊中的節號(section number)。
注意:僅當使用了cat man來命令建立手冊之后whatis命令才起作用。在超級用戶狀態下鍵入#cat man 可以建立手冊頁,其中是欲建立的節號。
依下列步驟可以找到手冊的節號:
1、 鍵入whatis 。本命令手冊的******行顯示出來,此行中含有該命令手冊的節號。
2、鍵入man -s 再回車,則顯示手冊頁。
gtxa%whatis chown
chown chown(1) -change owner of file
chown chown(1b) -change owner
chown chown(1m) -change owner
chown chown(2) -change owner and group of a file
gtxa%man -s2 chown
chown(2) SYSTEM CALLS chown(2)
NAME
chown, lchown, fchown-change owner and group of a file
SYNOPSIS
# include
# include
int chown(const char * path, uid-t owner, gid-t group);
int chown(const char * path, uid-t owner, gid-t group);
int fchown(int fildes, udi─towner, gid─t group);
DESCRIPTION
chown()sets the owner ID and group ID of the file specified by path or feferenced ty the open file descriptor fields to owner and group respectively. if owner or group is specified as-1, chown() does not change the corresponding ID of the file. ...
2.6查閱磁盤信息
下面的命令可用來查磁盤使用信息,并指出某文件系統是本地的UFS還是遠程的(nfs)。
2.6.1顯示磁盤空間的信息(df -k)
Solaris中的df命令,當不加參數使用時, 輸出結果與以前的df命令不同。df加上-k選擇項,可以按SunOS 4.x中的格式來顯示磁盤信息。鍵入df -k顯示文件系統名,總字節數,已使用的字節數,剩余字節數,已經使用的百分比,以及安裝點。
gtxa%df -k
/dev/dsk/c0t0d0s0 30383 19926 7427 73% /
/dev/dsk/c0t0d0s6 189683 66503 104220 39% /usr
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
swap 44268 12 44256 0% /tmp
/dev/dsk/c0t0d0s7 331953 116133 182630 39% /opt
/dev/dsk/c0t3d0s7 189858 24293 146585 14% /export/home
openetpid146) 0 0 0 0% /nt
openetpid146) 0 0 0 0% /home
....
2.6.2判別某文件系統是否為本地文件系統(df)
鍵入df 可以查出某文件系統是本地文件系統還是遠程安裝的網絡文件系統(nfs)。與指定的文件系統相應的磁盤格式信息(包括磁盤位置或安裝點)也將顯示出來。
在下例中,文件系統是nfs文件系統。
gtxa%df /home/ignatz
bigriver:export/home/ignatz 5388980 399435 85647 82%/tmp-mmt/home/ignatz
gtxa%
在下例中,文件系統在本地硬盤上
#df /
/dev/dsk c0t0d0s0 30383 11885 15468 43% /
2.6.3找出某種類型已安裝的文件系統(df -F)
若欲顯示同一類型的所有已安裝文件系統,可使用-F選擇項,后接文件系統類型。***常用的文件系統結構是本地文件系統ufs 和網絡文件系統nfs。鍵入df -F 可列出所有特定類型的已安裝文件系統。下例中,顯示所有已安裝的nfs文件系統:
gtxa%df -F nfs
/net (cinderella: (pid153):0 blocks-1 files
/usr/dist( cinderellapil53)):1276248 block.-1 files
/home (cinderella pid153): 0 block-1 files
/usr/man (ocak: /export/man) : 272934 blocks-1 files
gtxa%
在下例中,顯示已安裝的ufs(本地)文件系統。
cinderella%df ─F ufs
/ (/dev/dsk/c0t0d0so): 36992 blcoks 13558 files
/usr (/dev/dsk/cotodod6): 274346 blocks 94403 files
/export/home/cinderella (/dev/dsk/cotddos7): 379670 blocks 96046 files
cinderell%
在下列中,顯示已安裝的臨時文件系統信息
cinerella%df ─F tmpfs
/tmp (swap): 88528 block 3156 files
注: 由于交換區文件系統(swapfs)從不安裝,故不可用df命令顯示之。
第3章、設備管理
本章主要介紹:磁帶的使用、軟盤的使用、磁盤管理、服務訪問機制、建立雙向調制解調器
本章描述如何使用磁帶和軟盤拷貝文件,而如何備份和恢復整個文件系統是第四章的內容,第四章還講述磁帶設備名和用來管理磁盤命令,介紹有關管理終端、調制解調器及其它使用SunOS 5.x系統軟件的網絡設備的服務訪問機制(SAF) ─提供為打印服務器和打印客戶啟動端口管理器、向系統中加入與Hayes兼容的調制解調器的步驟,第六章中介紹如何管理打印機。
3.1磁帶的使用
本節講述磁帶設備命名約定、讀寫盒式磁帶的命令、以及如何使用tar和cpio命令對帶存取文件。
tar和cpio命令可將文件或文件系統拷入磁帶,按照拷貝靈活性和精度的要求可以決定選用哪個命令。
tar命令將文件和目錄樹拷入單個磁帶,注意: SunOS 5.x的tar命令可以存取特殊文件(塊設備,字符設備文件fifo文件)但SunOS 4.x的tar命令則不可存取這類文件,cpio命令的可移植性則好些。
cpio命令用于拷貝需使用多卷磁帶的任何文件、 特殊文件或文件系統,也可以用于將SunOS 5.x系統中的文件拷貝到SunOS 4.x系統中,cpio命令比tar 命令更為******地將數據裝入磁帶,而讀出時又可跳過磁帶上的壞區,cpio命令還提供了寫文件時不同格式頭(tar,ustar,crc,doc,bar)的選擇,以保證不同類型系統之間的可移植性。
由于tar和cpio命令使用原始設備(raw device), 故不用在使用之前對磁帶格式化或創建新的文件系統,使用的磁帶驅動器和設備名取決于硬件及系統配置。
3.1.1磁帶設備的命名習慣
磁帶設備命名習慣采用邏輯的─而非物理的設備名,磁帶機依控制器類型分為兩類:
?;Xylogics472類,1/2英寸裝于機架上的(頂部裝入)對卷(reel to reel)式驅動器,(每個控制器***多帶4個驅動器) 。
?;SCSI類,1/4英寸盒式帶,1/2英寸前部裝入對卷式,及4mm或8mm螺旋掃描驅動器,(每個控制***多帶8個驅動器)。
在/dev/rmt子目錄中,有******一組磁帶設備文件,它們支持不同的輸出密度,通??砂磮D3.1來規定磁帶機設備。
/dev/rmt/XAn
Optional
No-Rrwind
Optional n no-rewind;
Density omit for rewind
l low
Drive m medium
0 h high
1 u ultra
2
3
4
n
圖3.1 磁帶機設備名
后面三節講述驅動器號、密度選擇及不倒帶選擇。
3.1.1.1使用缺省密度規定驅動器號
通常磁帶驅動器是通過其邏輯單元號來指定的,其單元號由0至n,如果不指定密度,則驅動器依磁帶優先密度(通常指它支持的******密度)寫。
指明******個驅動器,可使用:/dev/rmt/0
指明第二個驅動器,可使用:/dev/rmt/1
注意:多數設備名的序列號從0開始,所以,當使用******磁帶或目標時,其號碼為0而不是1。
3.1.1.2為磁帶機指定密度
有時會遇到某系統的磁帶機只支持某種密度,這時若拷貝磁帶,則需指定一個以此密度寫的設備名,使用下列規則:
/dev/rmt/
表3.1列出了驅動單元和密度符號,例如,指明******個(0號)驅動器使用中密度的原始磁帶機,使用:
/dev/rmt/0m
表3.1 磁帶設備名中的驅動器單元和密度符號
設備名 =/dev/rmt/
磁帶驅動器號(數字),0-n,與控制器類型無關
密度(字符),取決于控制器和驅動器類型
null 缺省,優先(******)密度
l 低密
m 中密
h 高密
u 極高密(ultra)
3.1.1.3指定"不倒帶"選項
命令執行后,除非將"不倒帶"的選項作為設備名的一部分,否則磁帶機將自動倒帶,指定"不倒帶"選項,只需在設備名之尾加上"n"字。如:/dev/rmt/0mn
3.1.1.4不同磁帶控制器和介質的設備名縮寫
一個系統中,可以同時有SCSI和非SCST磁帶機,SCSI控制器至多可帶8個SCSI磁帶機, 非SCSI控制器至多可帶4個磁帶機,對于一驅動器號(x),密度符號取決于后面介紹的控制器和驅動器類型。
表3.2列出不同磁帶控制器驅動器和介質的設備縮寫。
注: 設備縮寫中驅動器號不一定為列出的0,可以1、2或3等等,它取決于系統上連有多少磁帶機。
表3.2 磁帶控制器/驅動器和介質的設備名縮寫
控制器 驅動器單元 大小 類型 格式 磁道 設備縮寫
Xylogics 472 Fujitsu 1/2inch 卷繞式 1600bpi 9 /dev/rmt/0m
M2444 1/2inch 卷繞式 800bpi 9 /dev/rmt/0h
SCSI/前插入式 HP 1/2inch 卷繞式 1600bpi 9 /dev/rmt/0m
6250bpi 9 /dev/rmt/0h
SCSI Sysgen 1/4inch 盒式 QIC-11 4 /dev/rmt/0l
QIC-24 4 /dev/rmt/0m
QIC-11 9 /dev/rmt/0l
QIC-24 9 /dev/rmt/0m
Emulex 1/4inch 盒式 QIC-11 4 /dev/rmt/0l
MT-02 QIC-24 4 /dev/rmt/0m
QIC-11 9 /dev/rmt/0m
QIC-24 9 /dev/rmt/0m
Archive 1/4inch 盒式 QIC-150 18 /dev/rmt/0h
QIC-15O
Wangtek 1/4inch 盒式 QIC-150 18 /dev/rmt/0h
QIC-150
Desktop 1/4inch 盒式 QIC-150 18 /dev/rmt/oh
Backup Pack
3.1.1.5 1/2英寸卷繞式非SCSI內接(Rack mounted)磁帶機
這類磁帶機,無論是Tapemaster還是Xylogics472控制器,其設備名/dev/rmt/XA 中選擇都基于表3.3中的密度項。
表3.3 Rack-mounted 1/2英寸磁帶機的指定密度
符 號 密度
null 缺省******密度(6250bpi非壓縮)
1800 bpi
m1600 bpi
h6250 bpi
u6250 bpi,壓縮
若省去密度符號,那么就依磁帶的***高密度寫,且不壓縮。
3.1.1.6 1/4英寸SCSI盒式和1/2英寸前部裝入的卷繞式磁帶機
對于這這類磁帶機,其設備名(/dev/rmt/XA)中表示密度的A項基于表3.4。
表3.4 SCSI磁帶機的指定格式和密度
字符 密度(1/4英寸盒式) 密度(1/2英寸前部裝入對卷式)
null 缺省******密度 缺省***高密度
l QIC-11格式 800bpi
m QIC-24格式 1600bpi
l QIC-150 6250bpi
u 保留 保留
對于1/4英寸盒式帶,密度是由寫入數據的格式----QIC決定的,QIC-11和QIC-24 格式磁道上每英寸約寫1000字節,QIC-150的密度要高些,60Mb 1/4 英寸盒式磁帶機的優選密度是QIC-24,150Mb 1/4英寸盒式磁帶則為QIC-150。150Mb 的磁帶機只能按QIC-150格式寫,不可以按QIC-24或QIC-11格式寫,格式的選擇僅可同時可依QIC-24和QIC-11寫的磁帶機才有意義。
3.1.1.7 螺線掃描磁帶機
螺線掃描磁帶機(例如: Exabyte 8mm 或 Wang/DAT 4mm)是特殊的SCSI磁帶機,它們僅依指定密度寫,因此,通常只需通過磁帶機號來指定它們,例如:
/dev/rmt/0
3.1.2讀寫磁帶的命令
下面介紹一些讀寫磁帶的命令
3.1.2.1拉緊磁帶
如果讀磁帶時出錯,則可以拉緊(retnsion)磁帶帶清掃磁帶機,再重讀一次。
gtxa%mt -f /dev/rmt/1 retension
gtxa%
3.1.2.2倒帶
鍵入mt -f /dev/rmt/ rewind
指定的n號磁帶機倒帶。下例中,對/dev/rmt/1進行倒帶:
gtxa%mt –f /dev/rmt/1 rewind
gtxa%
3.1.2.3列出磁帶機狀態
鍵入mt –f /dev/rmt/ status則可顯示磁帶機狀態
此例顯示磁帶機/dev/rmt/1中無磁帶:
gtxa% mt -f /dev/rmt/1 status
/dev/rmt/1:no tape loaded or dri e offline
gtxa%
在此例中,顯示/dev/rmt/<1>;的狀態:
gtxa%mt –f /dev/rmt/1 status
Archive QIC-150 tape drive:
sense key(0x6)=nuit attention residual=0 retries
file no=0 block no=0
gtxa%
3.2 磁帶與軟盤操作
3.2.1 tar命令
下面幾節描述如何使用tar命令將文件拷入磁帶,并從磁帶上列出文件,增加文件和讀出文件。
3.2.1.1向磁帶寫文件(tar)
依下列步驟向磁帶寫文件:
1、 進入含有欲拷文件的目錄;
2、 插入有寫權限的磁帶到磁帶機中;
3、 鍵入tar cvf /dev/rmt/
注意: 使用c選項寫帶,將破壞磁帶上原有文件,如果欲保護磁帶上原有文件,則需使用后面講述的"r"選擇項來附加文件。
c選項表示拷貝(copy)指定的文件,v選項(verbose)表示在拷貝過程中顯示文件信息,f選項(files)后面加上磁帶設備名,指定文件向何處拷貝,被指定的文件拷貝到磁帶上,覆蓋磁帶上原有文件。
注: 可以使用元字符(?和*)作為文件名的一部分。例如,為了拷貝所有具有.doc后綴的文件,在文件名部分鍵入*.doc即可,如果指定文件名部分是一目錄名,那么此目錄及其所有子目錄均遞歸地拷入帶中。
4、 自磁帶機中取出磁帶,填寫標簽。
在下面的例子中,將兩個文件拷入0號磁帶機中的磁帶
gtxa%cd /home/winsor
gtxa%ls evaluation*
evaluation. doc evaluation. doc. backup
gtxa%tar cvf /dev/rmt/0 evaluation*
a evaluation. doc 86 blocks
a evaluation. doc backup 84 blocks
gtxa%
3.2.1.2列出磁帶上的文件(tar)
依下列步驟列出磁帶上的文件:
1、 將磁帶插入磁帶機;
2、 鍵入tar tvf ./dev/rmt/
t選項(table)表示將指定文件列出,v選項(vevbose)表示在列文件時仿ls -l的格式顯示文件信息,f選項(files)表示在此選項后的磁帶機設備名表示文件所在設備。
在下列中顯示0號磁帶機中所放磁帶的內容
gtxa% tar tvf /dev/rmt/0
rm-rm-rm-6693/10 44032 Apr 23 14:54 1991 evaluation. doc
rm-rm-rm-6693/10 44008 Apr 23 14:57 1991 evaluation. doc. backup
gtxa%
從左向右,上面信息的******列顯示文件存取權限,第二列顯示文件的屬主與屬組,第三列顯示文件字節數,第四、五、六、七列是文件***后修改的月、日、時間和年號,***后一列是文件名。
3.2.1.3向磁帶上增加文件(tar)
依下列步驟可以向磁帶上拷入文件而不破壞磁帶原來內容:
1、 進入含拷貝文件的子目錄;
2、 將具有寫權限的磁帶插入磁帶機;
3、 鍵入tar rvf /dev/rmt/ ......
則指定文件被拷入指定磁帶中;
注:可以使用元字符(?和*)作為文件各的一部分。例如,拷貝所有具有.doc后綴的文件,只需在指定文件名部分鍵入*.doc即可。
4、 自磁帶機中取出磁帶,填寫標簽。
下例中,向0號磁帶機中的磁帶上增加文件:
gtxa%cd /home/winsor
gtxa%tar rvf /dev/rmt/0 junk
a junk 1 blocks
gtxa% tar tvf /dev/rmt/0
rm-rm-rm-6693/10 44032 Apr 23 14:54 1991 evaluation. doc
rm-rm-rm-6693/10 44008 Apr 23 14:57 1991 evaluation. doc. backup
rm-rm-rm-6693/1018 Dec 10 11:36 1991 junk
gtxa%
tar命令的使用n選項(不倒帶),可以讓用戶多次使用tar命令順序向磁帶上拷文件,例如:拷文件后不倒帶,下次使用此磁帶拷貝時,文件就寫在前次拷貝的文件后面。
3.2.1.4從磁帶中析取文件(tar)
1、 進入欲存文件的子目錄;
2、 將磁帶插入磁帶機;
3、 鍵入tar xvf /dev/rmt/
磁帶上所有的文件都拷入當前目錄。
此例中,0號磁帶機中磁帶內容全部被拷貝出來:
gtxa%cd /home/winsor/Evaluations
gtxa%tar xvf /dev/rmt/0
x evaluation.doc,44032 bytes,86 tape blocks
x evaluation.dos.backup,43008 bytes,84 tape blocks
gtxa%
自磁帶中析取個別文件,只需鍵入tar xvf /dev/vmt/ ......指定文件則從磁帶中拷貝出,并放入當前目錄,此例中前綴是evaluation文件自0號磁帶機的磁帶中拷貝出:
gtxa%cd /home/winsor/Eealuations
gtxa%tar xvf /dev/rmt/0 evaluation *
x evaluation.doc, 44032 bytes, 86 tape blocks
x evaluation.dos, backup, 43008 bytes, 84 tape blocks
gtxa%
下面步驟表示如何自磁帶中析取整個子目錄:
1、 進入欲放文件的目錄,如果拷入的子目錄已存在,那么,應進入該子目錄的父目錄中,而且應保證原子目錄中的內容可以覆蓋掉,例如,將磁帶中的目錄Book拷入/home/winsor/Book中,應鍵入cd /home/sinsor; tar xvf /dev/rmt/Book,若原先就進入/home/winsor/Book中,則拷入內容則存于/home/winsor/Book/Book中。
2、 鍵入tar xvf /dev/rmt/ 則此目錄與其所有子目錄遞歸地自磁帶上拷出。
注意: 自磁帶中拷出的文件名就是所存的文檔文件名,如果對文件名不清楚,可以先列出磁帶上的文件名,步驟詳見"列出磁帶上的文件(tar)"或tar(1)手冊。
3.2.2cpio命令
使用cpio命令建立磁帶文檔時,它自標準輸入設備取得一串文件或路徑名, 然后將它們寫到標準輸出設備上,輸出通常反向到文件或設備,后面講述怎樣使用cpio命令將文件拷入盒式磁帶,列出盒式磁帶文件,及析取磁帶上的某個文件子集。
3.2.2.1將某目錄下的所有文件拷入磁帶(cpio)
依下列步驟將某目錄下的所有文件拷入磁帶:
1、 將具有寫權限的磁帶插入磁帶機;
2、 鍵入ls l cpio –oc >; /dev/rmt/
當目錄中所有文件則拷入指定磁帶機中的磁帶內,覆蓋磁帶上已有文件,顯示拷貝總塊數;
3、 取出磁帶,填好標簽。
在下列中,/home.winsor/TOI目錄的文件均拷入0號磁帶機內的磁帶。
gtxa%cd /home/winsor/TOI
gtxa%ls -1 cpio –oc >; /dev/rmt/0
31 blocks
gtxa%
3.2.2.2列出磁帶上的文件(cpio)
依下列步驟:
1、 將磁帶插入磁帶機;
2、 鍵入cpio -civt < /dev/rmt/
其中i選項自磁帶讀入(in)內容,v選項仿ls -l格式列出文件;t選項對指定磁帶機中的磁帶內容列表。
注意: cpio命令列表使用的時間與讀整個文檔的時間一樣長,因為cpio命令需遍歷整個文檔。
在本例中,0號磁帶機中的磁帶有四個文件:
gtxa%cpio -civt < /dev/rmt/0
100666 winsor 3895 Feb 24 15:13:02 1992 Boot.chapter
100666 winsor 3895 Feb 24 15:13:23 1992 Directory.chapter
100666 winsor 6491 Feb 24 15:13:52 1992 Install.chapter
100666 winsor 1299 Feb 24 15:14:02 1992 Intro.chapter
31 biocks
gtxa%
******列是八進制表示的存取權限;第二列顯示文件屬主;第三列列出文件所占字節數;第四、五、六、七列顯示文件***后改動的月、日、時間和年份;***后一列是文件名。
3.2.2.3析取磁帶上所有文件(cpio)
如果(磁帶上)文檔是使用相對路徑名建立的,那么輸入文件在當前目錄下, 如果文檔是使用******路徑名建立的,則以相同的******路徑重新生成此文件。
注意: 使用絕對路徑名來拷貝磁帶文件是危險的,因為這樣會覆蓋文件系統中的原有文件。
依下列步驟拷貝文件:
1、 進入欲放文件的子目錄;
2、 將磁帶插入磁帶機;
3、 鍵入cpio -icv < dev/rmt/
指定磁帶機中磁帶上所有文件拷入當前目?/div>
摘自:http://bbs.chinaunix.net/viewthread.php?tid=16504