UNIX 系統常用管理命令_unix linux
最後更新:2017-01-18
來源:互聯網
上載者:User
一. 引言
UNIX系統作為一種強大的多使用者分時作業系統,在越來越多的場合受到了應用,同時,對UNIX的系統管理的要求也隨之越來越多,但目前的書籍對UNIX系統管理命令介紹的並不是很多。本文主要是針對UNIX系統管理員,以SUN SOLARIS 2.6 系統為
例,列舉了一些UNIX常用的管理命令的使用及其使用中遇到的問題和解決方案,供大家參考。
二. 常用系統管理命令介紹
1. share 和 mount 命令
這是系統管理員常用的兩個命令,share命令用於把原生目錄共用出來,以便其它UNIX系統可以使用;mount命令則用於把其它UNIX系統共用出來的目錄掛接到原生掛接點上,從而可以使用其它UNIX系統的資源。 例如:
在機器A上輸入 machineA# share -F nfs -o rw /share-dir
在機器B上輸入 machineB# mount -F nfs machineA:/share-dir /mount-point
第一條命令把機器A的 share-dir 目錄共用出來,並且共用的許可權是可讀寫;
第二條命令把機器A的共用目錄掛接到機器B的 mount-point 目錄上。
完成這兩個命令後,使用者在機器B上通過對mount-point的訪問就可以操作機器A上的
share-dir目錄了。
但是有時我們操作時,在機器B上執行了mount命令後,會返回
"RPC: Program not registered"這樣的錯誤,這是因為在機器A上缺少mountd和nfsd 這兩個守護進程(daemon)。UNIX系統啟動時,系統會自動檢查/etc/dfs/dfstab檔案,如果檔案中有要共用的資源,則啟動這兩個守護進程,反之,則不啟動。所以如果我們在/etc/dfs/dfstab中沒有內容,則系統不能啟動mountd和nfsd這兩個守護進程,用share命令共用的目錄也不能真正被別的系統共用。
解決這個問題的方法很簡單,我們可以把要共用的目錄放入/etc/dfs/dfstab中,則下一次系統啟動時會自動共用這個目錄;另外,我們也可以手動啟動這兩個守護進程,方法是首先用超級使用者(root)登陸,在命令列輸入如下命令:
machine_A# /etc/rc3.d/S15nfs.server start
或輸入:
machine_A# /usr/lib/nfs/mountd
machine_A# /usr/lib/nfs/nfsd -a 16
就可以啟動這兩個守護進程了。
守護進程啟動後,共用目錄才真正被共用出去,這時再在機器B上用mount命令就可以把機器A的目錄掛接到機器B上了。
2. quota 系列命令
UNIX作為一種多使用者系統,它允許多個使用者共同使用系統的資源,包括系統的記憶體,CPU和硬碟。在預設情況下,系統並不會限制每個使用者可以使用硬碟空間的大小,所以如果使用者惡意使用硬碟,或使用者由於疏忽,將硬碟空間全部佔用,將導致其他使用者無法使用硬碟,從而使系統效能下降,甚至有崩潰的危險。
其實,UNIX提供的quota系列命令可以協助我們解決這個問題,這些命令包括:
quota : 顯示使用者的硬碟限額和使用方式。
edquota : 為每個使用者設定硬碟限額。
quotaon: 開機檔案系統硬碟限額服務
quotaoff : 關閉檔案系統硬碟限額服務
repquota : 顯示當前硬碟限額狀態
配置這項服務的方法很簡單。但在使用硬碟限額服務之前,我們要明白硬限制和軟式節流這兩個概念。所謂硬限制是指對資源節點和資料區塊的絕對限制,在任何情況下都不允許使用者超過這個限制;而軟式節流是指使用者可以在一定時間範圍內(預設時為一周,在/usr/include/sys/fs/ufs_quota.h檔案中設定)超過軟式節流的額度,在硬限制的範圍內繼續申請資源,同時系統會在使用者登入時給出警告資訊和仍可繼續申請資源剩餘時間。如果達到時間期限,使用者的硬碟使用仍超過軟式節流的額度,則系統將不允許使用者再申請硬碟資源。
明白了這兩個概念,我們就可以配置硬碟限額服務了,首先我們必須在要限制的檔案系統的根目錄下建立一名字為quotas的檔案,該檔案的所有者應是root,且其它使用者不可以對它進行寫操作。方法是:
# cd /home (進入檔案系統根目錄,注意並不是系統根目錄,本例為/home目錄)
# touch quotas (建立一名字為quotas的空檔案)
# chmod 644 quotas (變更檔屬性,使只有root可以對它進行寫操作)
然後,我們編輯/etc/vfstab檔案,找到要進行硬碟限額服務的檔案系統,並將
mount option欄位的值設為rq,然後並存檔退出。
完成這兩步後,我們使用edquota命令為每個使用者佈建硬碟限額,在root許可權下輸入以下命令:
#edquota username
這時系統會自動產生一個臨時檔案,並且有如下內容:
fs /users blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
其中fs欄位表明使用硬碟限額的檔案系統,本例為/users,block和inodes表明使用者可以使用的硬碟KB數和I節點數,即使用者可使用的硬碟空間和可建立的檔案數,soft和hard分別對於前面提及的軟式節流和硬限制。
編輯這個檔案,把軟,硬限制設定到合適的數值,然後存檔退出。這時我們可以看到quotas檔案的大小已經被改變,說明使用者的限額已經儲存。重複這條命令,給每一個使用者都配置硬碟限額。另外,如果我們分配給使用者的硬碟限額都相同,我們可以使用 "-p" 參數而不用為每個使用者都編輯一個檔案,它的使用方法是:
#edquota -p reference-username username
編輯完檔案後,我們就可以用quotaon來啟動服務了,在root許可權下輸入
#quotaon /users
就可以啟動限額服務。如果我們要查看各個使用者的當前使用方式,可以使用
repquota 命令,在root許可權下輸入:
#repquota /users
系統會顯示:
從中我們可以很容易看到使用者的硬碟和檔案的使用方式以及超過軟式節流後仍可申請資源的時間等等。
當然我們可以用quotaoff取消硬碟限額服務。另外,系統還提供quotacheck 命令對限額的一致性進行檢查。
3. ifconfig命令
ifconfig命令用於查看和更改網路介面的地址和參數,如果要顯示某台UNIX主機的IP地址,我們可以在命令列下輸入:
$ifconfig -a
系統會顯示網路介面的名稱,介面的狀態(up or down),介面的IP地址和掩碼等資訊。
如果我們要更改網路介面的IP地址,可以在root許可權下輸入:
#ifconfig hme0 down
#ifconfig hme0 202.1.2.3 netmask 255.255.255.0 up
首先,使用down命令參數把網路介面hme0的服務暫時停止,然後再用ifconfig命令給介面分配新的IP地址和掩碼,並啟動網路介面服務。本例中把hme0介面的IP地址設為202.1.2.3,掩碼為255.255.255.0。
我們也可以通過改變檔案/etc/hosts中的IP地址的值並重新啟動系統來更改機器的IP地址。
在系統啟動時,網路介面服務時自動被啟動的,我們不需要手動地建立網口服務,但有時我們更改了網卡或增加了網卡後,系統不能自動啟動該介面服務,這時我們需要手動建立網口服務,在root許可權下輸入:
#ifconfig hme0 plumb
即可以為介面le0建立網口服務。
相應地,用ifconfig帶unplumb參數可以停止服務並關閉網路介面,這時我們再用ifconfig -a 命令將看不到該網路介面。
4. format命令
format也是一個重要的系統管理命令,但由於它的破壞性極大,使用時一定要小心。format命令主要有兩個用途,即格式化硬碟和重新對硬碟分區,下面分別加以說明:
1) 格式化硬碟
和DOS一樣,UNIX的硬碟在使用之前也需要格式化,在對它格式化之前,我們要用單使用者形式重啟動系統
#reboot -s
啟動後用root使用者登入,然後在命令列下輸入:
#format
系統會顯示所有的硬碟並讓我們選擇要格式化的硬碟:
本例中系統有兩個SUN2.1G的硬碟,我們選擇1並斷行符號,系統會顯示如下菜單:
在提示符下輸入type來選擇硬碟類型,系統會列出它支援的硬碟類型,選擇合適的硬碟類型並輸入相應的代碼(也可以輸入0讓系統自動檢測)。選擇完硬碟類型後,就可以配置硬碟分區,有關分區的具體操作請參見"2)重新分區"一節。
配置結束後,輸入format命令進行格式化,這將花費一定的時間,具體時間的長短受機器型號和硬碟大小的影響。格式化完成後,就可以輸入quit命令退出了。
硬碟格式化後,並不能立即被使用,我們還需要在上面建立檔案系統,使用命令newfs來為每一個分區建立檔案系統:
#newfs /dev/rdsk/c0t1d0s0
#newfs /dev/rdsk/c0t1d0s1
…
參數的具體數值根據分區的情況來設定。
另外,如果該硬碟包含開機磁碟分割(根分區),我們需要手動安裝啟動模組,安裝之前首先要有UNIX系統安裝光碟片,我們通過光碟片啟動後,將系統根分區掛接上,並從光碟片安裝啟動模組,具體方法如下:
#reboot cdrom -s (從光碟片啟動,並進入單一使用者模式)
#mount /dev/dsk/c0t1d0s0 /mnt (將系統根分區掛接到mnt目錄下)
#cp /ufsboot /mnt
#installboot /lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0 (安裝啟動模組)
#umount /mnt (卸下掛接)
#reboot (重啟動)
至此,硬碟的格式化操作已經完成,我們可以使用該硬碟了。
2) 重新分區
format命令也可以對硬碟進行重新分區。重新分區後,受影響分區上的所有檔案將被清除,所以在進行這個操作前,我們應注意要先對檔案系統進行備份。重新分區的具體方法如下:
首先我們要進入單使用者形式,並用root使用者登入,然後在命令列下輸入:
#format
系統會顯示所有的硬碟並讓我們選擇硬碟: 我們選擇0並斷行符號,系統會顯示如下菜單:
輸入partition,再輸入modify,斷行符號,系統提示使用者選擇分區基礎(partitioning base) ,選擇1,斷行符號,系統會顯示:
我們把分區6作為自由分區,這意味如果其它分區大小變化,自由分區6用來作為硬碟空間的積累或減少。然後按系統要求輸入期望的分區值,format會自動調整分區柱面邊界,使各個分區之間沒有空隙。斷行符號確認該分區表,並給該分區表命名,確認後退出format 命令。
分區結束後,我們要用newfs命令為改變的分區建立檔案系統
# newfs /dev/rdsk/c0t0d0s6
然後將備份的檔案拷回,完成硬碟分區的更改工作。
這裡要再一次提到的是,format命令具有極大的破壞性,很容易導致資料丟失,甚至系統崩潰,所以在使用它的時候一定要小心。
5. fsck命令
fsck命令也是一個經常使用的命令,它用於對檔案系統進行檢查,並對損害的檔案系統進行修複。
fsck的文法如下:
fsck (-F fstype) (-v) (-m) (-special…)
fsck (-F fstype) (-v) (-y|Y|n|N) (-o fstype options) (special…)
其中:
-F fstype : 說明被檢查的檔案系統的類型
-v : 返回完成的命令列,但不運行
-y|Y: 對所有問題均回答Yes
-n|N: 對所有問題均回答No
-m: 對檔案系統進行檢查,不修複檔案系統,如果檔案系統經檢查後是可安裝
的,則顯示 ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay.
-o: 檔案系統類型選項,選項由逗號分隔,最常用的選項有兩個:
P: 整理(preen)模式
F: 強制檢查模式,此選項忽略檔案系統狀態標誌。
運行fsck後,該命令會分6個階段對檔案系統進行檢查,這六個階段分別是:
階段1: 檢查塊和塊的大小
階段2: 檢查路徑名
階段3: 檢查串連性
階段4: 檢查參考記數
階段5: 檢查自由塊列表
階段6: 補救自由塊列表
fsck在對每個階段進行檢查時,如果發現錯誤,會提示使用者進行修改,常見的一些錯誤有:
1) 移去一個沒有相關檔案的目錄入口
這時使用者可以回答Yes或Y來刪除該目錄入口。
2) 重串連一個已指派但不能訪問的檔案:
fsck找到了一個已指派的I節點,但卻不可訪問(該節點沒與任何目錄串連),這時一般對fsck的"RECONNECT?"回答Yes,即把該I節點串連到lost+found目錄下,檔案名稱即是I節點號,之後管理員應檢查該檔案類型,判明該檔案用途,再將該檔案拷貝到相應目錄下。
3) 串連數調整
在互動方式下,fsck若發現串連數不一致,將詢問使用者採取何種行動,本例發現一目錄的I節點串連數與該目錄的真實串連數不一致。
這時使用者應該回答Yes或Y來改正串連數。
4) 自由塊表不一致
fsck查出未分配塊數與超級塊中所給出的自由塊表不一致。
這時使用者應該回答Yes或Y來修正超級塊。
從上面的出錯資訊和處理方法可以發現,對於fsck詢問的問題大多數情況下都可以用Yes來回答,所以在實際應用時,可以用" -y"選項來執行該命令對硬碟進行檢
查和修複。
6. route命令
route命令主要用於手動設定靜態路由表。例如我們要增加一條通過網關到達令一子網的路由,命令如下:
#route add net remote_net_ip gateway_ip 1
其中add代表要增加路由,net表示路由到達的是一個網路而不是一台主機,1代表遠端網路需通過網關才能到達,而不是直接與它相連(直接通過網路介面相連時,該參數用0)。
在Solaris 2.6 中,也可以使用如下命令:
#route add -net remote_net_ip gateway_ip -netmask netmask
#route add -host host_ip local_interface_ip -interface
其中第一條命令與上面介紹的命令完成相同的任務,而第二條命令則代表要建立一條通過網路介面到達另一台主機的路由。
當然,我們使用"delete","change"命令參數可以對路由表中的路由資訊進行刪除和修改。
執行完route命令後,我們可以?quot;netstat -rn"命令查看當前的路由資訊:
從路由表中可以知道當前共有5條路由,其中到達224.0.0.0和127.0.0.1的路由分別是廣播路由和本地路由,是由系統預設設定的。到達主機202.77.111.22的路由是通過本機網路介面串連的,到達網路202.77.112.0的路由則是通過網關202.77.111.1串連的。
通過route配置路由表後,該路由資訊會一直儲存到下次系統重啟。系統重啟後,則要重新設定路由表。通過修改檔案/etc/defaultrouter可以設定一些預設路由,這些路由在系統每次啟動時都會被加到路由表中,而不必每次啟動都用route命令來配置路由表。/etc/defaultrouter檔案的格式如下:
$cat /etc/defaultrouter
202.77.111.1
該檔案中現在只有一條預設路由,IP地址是202.77.111.1,這代表系統將把所有不屬於本地的資料包都通過網關202.77.111.1發送出去。
有時UNIX系統安裝完成後,/etc目錄下並不存在defaultrouter檔案,這時我們可以手工建立該檔案,並編輯好預設路由,然後重啟。系統啟動後,就會自動使用配置好的預設路由資訊了。
三. UNIX系統管理常見問題及解決方案
1. 忘記root 密碼
root使用者又被稱為超級使用者,它是許可權最高的使用者,一旦它的密碼被忘記,將給系統的維護和管理帶來很多困難,下面是忘記root密碼時的處理方法:
首先,我們需要從CD-ROM 啟動系統,命令是:
#boot cdrom -s
系統啟動後,我們要把硬碟根分區掛接到光碟檔案系統的/mnt目錄上,執行:
#mount /dev/dsk/c0t0d0s0 /mnt
(該例假設根檔案系統是/c0t0d0s0)
編輯硬碟根分區的shadow檔案,將root的密碼項位置設為空白。
#cd /mnt/etc
#vi shadow
注意,有的系統要編輯/etc/passwd 檔案而不是/etc/shadow檔案。
改完檔案後,將掛接的根檔案系統卸下。
#umount /mnt
重新啟動系統,並設定新的root密碼。
2. 系統無法啟動
系統無法啟動的原因大致如下:
1) 錯誤的引導裝置
假如因為指定了錯誤的引導裝置使系統不能引導,我們可以在PROM監控等級下利用"probe-scsi","probe-scsi-all"和"probe-ipi"命令來查看有什麼裝置被連
到系統上,並得到啟動裝置的devalias名。進入PROM的方法是當系統啟動時,同步選取"STOP"鍵和"a"鍵, 這時系統出現提示符ok>,即表明系統當前處於PROM
監控等級。
用printenv顯示當前配置情況,如果發現引導裝置不正確,可用setenv來重新設定:
ok>setenv boot-device devalias
用reset命令重新啟動系統,或set-defaults 恢複預設值。
2) 缺少重要的系統檔案,或檔案無效
這時可以用"-a"選項來引導系統,系統將提供互動引導過程,如果有找不
到檔案時,系統會提示使用者給出適當的檔案名稱。
3) 缺少關鍵的系統檔案,或檔案無效
例如缺少/etc/passwd檔案,這時系統可能會引導,但是沒有任何使用者可以註冊。修複方法是用光碟片啟動,掛接根檔案系統並編輯/etc/passwd檔案。
4) 無法掛接遠程檔案系統
系統啟動時,會自動執行/etc/vfstab檔案,如果在檔案中有無法掛接的遠程檔案系統,則系統會一直處於等待和重試狀態,無法進入登入介面。解決辦法是用單使用者啟動,編輯/etc/vfstab檔案,刪除錯誤的掛接內容。
3. 鍵盤失效
如果出現鍵盤失效的情況,即使用者在鍵盤上輸入資訊而螢幕上沒有響應,首先要檢查硬體的串連,即查看鍵盤與主機的串連是否完好,串連導線是否有折斷或損害情況。
如果硬體串連沒有問題,則查看是否不小心使用了鎖屏命令。方法是,按下"Ctrl+q"鍵,如果系統有響應,則說明是因為使用者按下了"ctrl+s"鍵將螢幕暫時鎖住的原因。鎖住後的螢幕將不顯示使用者從鍵盤輸入的資訊,但輸入的資訊依然能夠執行。
如果系統仍沒有響應,我們則要重新啟動系統,進入PROM狀態,輸入printenv命令,並查看input device項的值,如果它的值不是keyboard,用
ok>setenv inputdevice keyboard
來使鍵盤成為輸入裝置,然後再次重啟系統,這時系統將會響應使用者的輸入了。
4. cron 或 at 命令不能執行
UNIX系統並不允許任何使用者都可使用cron進行作業調度,對使用者的限制有兩個檔案,它們是/etc/cron.d/cron.allow和/etc/cron.d/cron.deny。
如果使用者名稱被添加到/etc/cron.d/cron.allow檔案中,則該使用者被允許使用cron,而不在該檔案中的使用者則不允許使用,如果使用者被添加到/etc/cron.d/cron.deny中,則該使用者不能使用cron,其它使用者則可以使用cron。通常我們根據需要配置其中一個檔案就可以了。
如果使用者被允許使用cron,則可以用命令
$crontab myCronFile
在系統的/var/spool/cron/crontabs目錄中安裝自己的作業調度控制檔案。
at 和 cron 相似,要使用at, 需要配置/etc/cron.d/at.allow或/etc/cron.d/at.deny檔案。
5. 在Telnet時不能用root登入
在預設情況下,出於安全性考慮,UNIX系統不允許在系統操作台(console) 以外的終端用root登入,所以有時我們通過Telnet用root登入時,會返回
"not on system console"
這樣的錯誤,這時,我們可以通過修改/etc/default/login檔案來允許root通過Telnet登入。具體方法是,編輯login檔案,找到下面的一行:
CONSOLE=/dev/console
將這一行注釋掉,即在行首加上"#"符,存檔退出,再次使用Telnet時,root就可以登入了。
6. 關於目錄的存取權限
我們都知道UNIX系統中的每一個檔案都有相應的存取權限,系統根據該許可權來控制使用者對檔案的訪問,UNIX系統中的目錄也有相應的存取權限,但它的定義與檔案有些不同。
讀許可權:
對目錄的讀許可權表示使用者可以查看該目錄的內容,即可以對該目錄使用象"ls"這樣的命令。
寫入權限:
對目錄的寫入權限表示使用者可以在該目錄下建立新檔案或將其中的檔案刪除,不論此時使用者對該檔案是否有寫入權限。
執行許可權:
執行許可權指使用者可以在該目錄下搜尋檔案,也即可以使用該目錄下具有相應存取權限的檔案。
四. 總結
以上介紹的管理維護命令只是UNIX系統維護管理命令的極少的一部分,UNIX還提供了其它很多有用的命令,這需要我們在工作中不斷的學習和研究。