+---------------------------------------------------+ | 10.X 文件系統已滿的信息 | +---------------------------------------------------+ filesystem is full filesystem is full filesystem is full filesystem is full ... 喔!似乎只有兩種類型的HP-UX 系統管理員: 看到了這個信息的管理員, 和 將要看到這個信息的管理員! 解決方法 這個信息的影響主要取決什文件系統報告了這個可怕的錯誤,根文件系統(/)的效果最糟糕。當根充滿,一切都開始出現故障;進程被終止,或者核心轉儲;依賴根目錄中文件的程序開始出現問題;清單在不斷加長。 要做的第一件事是體面地關閉系統,除非您知道問題所在。文件系統在不發出警告的情況下充滿有幾個原因,而其它的原因則需要費些氣力才能確定。 系統故障 ------------- 突然出現在/var文件系統的一個最大的文件可以在目錄/var/adm/crash中找到,這可以通過編輯/etc/rc.config.d/savecore 文件,將SAVECORE_DIR= 修改為除/var/adm/crash (缺省)以外的目錄來實現。要檢查的另外一個設置是SAVECORE=,它將確定您是否要保存轉儲,1為保存,0為不保存。如果禁止保存崩潰轉儲,那您就進入了好壞參半的境地: 好消息是故障不會突然以16至256 megs(或更多)數據的核心轉儲充滿您的文件系統,壞消息是沒有這個文件,很少有機會確定能夠確定系統故障的原因。 /var/adm/crash 是不是故障核心轉儲的唯一地點?不是,就象上面所說,該目錄在系統啟動文件/etc/rc.config.d/savecore中指定,您可以改為具有比/var/adm/crash更大的空間的文件系統。如果修改了目錄,那您將需要與主內存一樣多的空間來保存全部的崩潰轉儲。 savecore 運行時,根據所使用的10.x的修訂版本,您將得到兩個文件或一個子目錄和相關的文件,將創建文件vmcore.# 和vmunix.#,以及一個小文件bounds。# 符號是一個數字,它從0開始,每出現一個故障增加一次,bounds文件記錄要使用的下一個數字。 如果是在10.10或更高版本的系統上,您會得到一個目錄/var/adm/crash/core.#,同樣,#是每次崩潰轉儲都要增加的數字。在core.#目錄中將包含一系列的壓縮文件,這些壓縮文件組成了崩潰轉儲。例如: /var/adm/crash/core.0/core.0.1.gz、 /var/adm/crash/core.0/core.0.2.gz 等等.... 此外還會有一個vmunix.gz 文件。對10.10 及以上版本,還將有一個INDEX 文件。核心文件可以分成多個部分,INDEX 文件包含有關核心文件塊尺寸的信息。 出現故障系統重新啟動,/sbin/init.d/savecore文件檢查savecore 是否存在,指定的目錄是否存在...如果都存在,則savecore檢查轉存區(通常是主交換區域)是否有有效的HP-UX 內存轉儲。找到適當存儲的內存轉儲,savecore 程序顯示故障發生的日期/時間,並創建文件core.0 (如果這是該目錄中的第一個核心轉儲)。這個過程一直持續到所有的物理內存(RAM)都已寫入磁盤上。如果沒有足夠的文件系統保存全部的轉儲,savecore將不保存。如果主交換區域中沒有適當寫入的轉儲,savecore 不進行任何操作,也不顯示任何內容。 然,savecore 寫入當前的 /stand/vmunix 文件的一個副本,名字為vmunix.0 或 vmunix.gz,與轉儲文件相匹配。如果文件系統已滿,則創建的這個文件長度為零。為了能夠使用,核心轉儲還必須在轉儲時擁有/stand/vmunix(內核文件)的副本。 那避免/var 文件系統由系統故障而充滿的最好方法是什呢?只需選擇另外一個文件系統來存儲轉儲,這個文件系統一般來說有很大的空間,或者是始終有至少RAM尺寸加上大約10-20 megs (對 vmunix.#)空間的文件系統。如何知道RAM 的尺寸? 您可以鍵入命令: dmesg,看一下可用的實內存數量。 如果在故障之需要回收空間,只需將核心轉儲目錄的內容存儲到磁帶上...使用的最簡單的命令時: cd /my_core_dump_directory tar cvf /dev/my_favorite_tape_devicefile * 然您可以從核心轉儲目錄中刪除所有的文件,此時您可以與惠普聯系,以便對核心轉儲進行分析,確定故障的可能原因。 /stand ------ 10.x 的HP-UX內核比9.x要大得多,因此/stand 和 /stand/build可以迅速裝滿。在/stand目錄中應當有/stand/vmunix、/stand/vmunix.prev、/stand/system和/stand/system.prev,如果還有其它的內核或系統文件,您應當查看一下,以確定是否應當將其刪除。在/stand/build 中可能有其它的內核,查找名字叫/stand/build/vmunix_test 的一個文件,vmunix_test是之前創建、但從來沒有到位的內核。 文件系統 minfree ------------------ 在安裝了某個品牌的新磁盤之,每個管理員可能都要看一下bdf命令,並且發出疑問:那部分空的內存空間哪裡去了?答案是大約6% 至 8% 的磁盤空間被i結點表和超級塊所佔用,其中包含指向磁盤上各個文件塊的指針。此外,缺省的newfs 命令將在文件保存到磁盤上之前,保留10% minfree 或 10%的剩余空間,以增強文件系統的性能。 這個緩沖區使系統管理員可以解決特定磁盤上的空間問題(文件系統被標記為已滿之),並仍然有部分空間(10% minfree 區域)進行空間。盡管 minfree區域可以減少為零,但對根磁盤不建議這樣做,因為文件系統已滿的信息甚至可能不允許系統管理員登錄到故障系統上。 其它磁盤可能允許使用 0% minfree,只要這個空間得到監視,或者空間的使用基本上是固定的。還要注意的是,HP-UX 下磁盤空間的HFS 方法很大程度上依賴10% minfree保持在高級別上分配和釋放文件空間的性能。 另外一個文件系統調整功能是在用newfs初始化文件系統時,增加每結點的字節值。通過修改i結點所管理了的磁盤空間字節數,可以減少50%的開銷,代價就是減少可以用較少的i結點存儲的文件總數。這個參數很有技巧性,因為它可以阻止數據與不能處理各種每個i結點字節值的其它Unix 系統的隨意互換。 一般來說,將這個參數從2048 字節改為64K字節將只返回大約3%左右的磁盤空間,相應地減少了可以存儲的文件總數,但對大文件較少的情況,這種做法可能比較理想。一定要選擇一個能夠與您的操作系統版本兼容的值,i 結點尺寸很大通常無法移植到其它系統或者其它版本上。 不在 /dev中的文件 ------------------------------- 另外一個很常見的問題是在進行備份之出現文件系統已滿的信息,怎會這樣呢?HP-UX非常友好,它允許有拼寫錯誤,但經常會做一些不是完全預期之內的事情。例如,如果用戶將磁帶機的名稱: tar cvf /dev/rmt/om / 錯拼為 tar cvf /dev/rmt/0m / 那不是顯示一個錯誤信息,例如: tape not found 或者 devicefile does not exist, tar將創建一個普通的 文件,使用tar 命令中給出的名稱(或者 cpio 或 fbackup等),要備份的所有數據開始填充/dev/rmt/om 文件,直到整個系統都備份到根磁盤上。最終這個過程失敗,出現文件系統已滿的信息。 使用下面的命令可以找到/dev 中因疏忽而出現的拼寫錯誤: find /dev -type f 這個列表中將包含永遠都不應當出現在/dev中的文件,也就是普通文件。有時候可能在/dev目錄中也會發現一個核心文件或者意料之外的文件。 管理 /tmp 和 /var/tmp ----------------------------------------- /tmp是那些每個用戶都可以訪問、但很少有人認真對待的目錄中的一個。/tmp 定義為一個臨時的存儲區域,不被認為是永久性區域,電子郵件或vi 編輯器等進程使用/tmp 目錄存儲文件,但之正常的操作將清除這個目錄,不會將文件留在/tmp 目錄中。部分惠普程序將把日志文件放到 /tmp中,但被認為是適當的做法,因為日志文件應當用檢查錯誤,然即被刪除或存檔。 有一個警告運行Omniback 的用戶應當警惕,Omniback要求/tmp目錄中有一個名稱為CRS.pid的文件,否則Omniback 將不工作。 強制清除 /tmp 目錄的一個方法就是使用命令,例如: find /tmp -type f -atime +14 -exec rm {} \; 這個命令將刪除/tmp 中14天以上未被訪問的所有文件(或/tmp下一級目錄中的文件)另外一個臨時存儲區域/var/tmp被用戶濫用的情況少一些,因為他們沒有注意到它的存在。同樣,部分進程將在/var/tmp 中創建臨時文件,並且應當(如果這些進程正常結束)刪除它們的文件,vi 等編輯器使用/var/preserve。下面這個命令將清除/var/tmp 中7天以上未被訪問的文件: find /var/tmp -atime +7 -exec rm {} \; 系統管理員需要確定/tmp是否應當允許定期訪問的文件保留在/tmp中。用戶對文件使用touch命令可以回避上面的測試,在這種情況下,將-atime選項改為-mtime,它表示文件必須被修改。 有時候,您可能需要檢查未被扇面的命令刪除的舊目錄,其中的內容將被刪除,但過了一會兒之,/tmp 可能又會被一些空目錄弄得一團糟。 這是目錄中文件的一種可能性。下面的組合刪除7天以上的文件,然刪除7天沒有更新的目錄。但使用了一個簡單rmdir命令,所以如果目錄為空,該命令將會失敗。因此,在所有文件均被刪除之前,目錄仍將保留。 find /tmp -type f -atime +7 -print -exec rm -f {} \; find /tmp -type d -atime +7 -print -exec rmdir {} \; find /var/tmp -type f -atime +7 -print -exec rm -f {} \; find /var/tmp -type d -atime +7 -print -exec rmdir {} \; 另外一個常見的做法是在每一次完全備份之清除/var/tmp。 檢查 /home/ftp ---------------- 盡管 /home那些可能突然增大的目錄之一(由各個用戶創建了大量的文件),但仍然可能有一個ftp 目錄,也稱為匿名ftp,這個目錄允許用戶從網絡上發送/接收文件,不必具體登錄到系統上,這樣可能導致大文件突然出現。為檢查這種情況,可使用: du -k /home/ftp 大編號(10000 以上)可能意味著網絡上的某個用戶正在存儲大文件...將/usr/share/lib/pub 目錄上的許可從777改為755即可避免這種情況,其余的(標準) ftp目錄已經被設為755。匿名ftp 可以用SAM 進行設置,盡管找到這個選項有點技巧性...對 8.0x 系統: 選擇: Networks/Communications -> LAN Hardware and Software (Cards and Services) -> ARPA Services Configuration -> Create Public Account for File Transfers ... 對 9.0x 系統: 選擇: Networking/Communications-> Services: Enable/Disable Anonymous FTP Disabled Public account file transfer capability 對 10.x 系統: 選擇: Networking/Communications-> Network Services Anonymous FTP Disabled Public account file transfer capability 按下回車,匿名FTP將被突出顯示,然您就可以用下面的方法選擇Action菜單: 按下 f2 (label=Alt),然按字母a 或者 按下 f4 (label=Menubar),用箭頭鍵將菜單移到右側,根據情況選擇Enable 或 Disable。 從哪裡刪除文件集 ------------------------ 從 HP-UX 8.0 及更高版本開始,刪除不需要的文件集或應用程序的功能即已通過程序rmfn提供。在10.x下,該實用程序稱為freedisk(1M),詳細信息參見手冊頁。您可以進入Routine Tasks 部分,從SAM 運行此實用程序。在Routine Tasks 部分您可以找到其它有用的文件系統實用程序。另外一個工具就是cleanup命令,由較早的10.xx 系統補丁程序提供。 為什不能刪除程序?在過去的計算機中,一個簡單的程序只是一項,或者至多是一個目錄,因此很容易刪除,但這是那時的情況,現在則大為不同;今天程序存儲在整個文件系統的各個部分中。諸如rc 文件本地配置,應用程序缺省文件中的X/Window 資源,文檔的手冊頁,只有管理員需要的命令,以及通用的其它命令,所有這些都是一個應用程序的組成部分。 為了跟蹤所有這些內容,swinstall 和 swremove程序利用了保存在/var/adm/sw 目錄中的索引。此外還對不同文件集中的文件之間的從屬性進行跟蹤,這樣可以避免錯誤加載部分文件組,造成整體上不能實現全部的功能。盡管很多第三方軟件提供商使用swinstall程序,但也有很多供應商不使用,因此您必須參考您的提供商的空間管理文檔。 可以被刪除的文件集? =============================== 手冊頁 --------- 文檔頁(手冊頁)可佔用6到20 MB的空間。刪除手冊頁之, man命令將不再能夠找到任何聯機的幫助文件,但這樣可以節省大量的磁盤空間,尤其是對很少或者沒有程序開發的系統。 另外一個替代的選擇是只刪除/usr/share/man目錄中以字母'cat'開頭的目錄,這些目錄存在時,為格式化的幫助頁提供一個位置,當執行man 程序時,您可能會看到下面的信息: formatting...please wait 這個信息是在man程序將幫助頁面轉換為可讀格式時顯示的。 如果/usr/share/man/cat* 目錄存在,已完成的頁面即被保存,從而避免將來請求同一個頁面時出現延遲。一套完全格式化的手冊頁可能比未格式化的頁面大20 MB,如果用戶對這種延遲不是很在乎,刪除/usr/share/man/cat* 目錄平均可以節省10 MB的空間。 這裡提供一個技巧: 大部分用戶的日常操作只需要第1部分或1m 命令部分。作為系統管理員,您可能會發現這個空間(大約3-4 megs)很值得節省時間,只要它不再增大。有一個命令catman,它可以格式化完整的章節(1 和 1m 是分別對應所有用戶和系統管理員的HP-UX 命令),刪除觸除下面以外的所有cat* 目錄: /usr/share/man/cat1 /usr/share/man/cat1m 那使用命令: catman 11m,一次就只有這些命令的頁面能夠被格式化(我建議前一天晚上執行這個命令)。現在,對第1和1m部分的所有手冊頁請求馬上就會彈出,但磁盤空間不會由對手冊頁其它章節的引用而增大(每次出現時仍將被格式化)。 另外一個方法是刪除最近n天內未被訪問的頁面,其中n可以是15或30,只要適合您的情況。可以每周啟動一次cron作業,搜索/usr/share/man/cat*目錄中的格式化頁面,找出超過指定時間的文件。檢查find 命令的time stamp 選項,使用-exec 選項執行文件rm。 還有一個方法就是使手冊頁成為另外一個系統上的遠程 (NFS) 目錄。使/usr/man 駐留在一個系統上之,就可以消除數十兆字節的重復頁面。 NLS 文件 --------- 本地語言支持是另外一個區域,可以從不需要除英語之外的語言支持的系統上進行調整。對遠東語言,可能有些文件非常大,因為它們可能需要復雜的字符集(例如假名或朝鮮語)。 惠普診斷程序 -------------- 這裡有些技巧。刪除它們可以節省大量空間,尤其是在700 和 800系統上。另一方面,它們為服務人員提供有關系統上可能發生的問題的詳細信息,以及有關具體錯誤的詳細日志文件,您可能希望與本地支持人員討論刪除診斷程序的優缺點。 與所有的惠普文件集一樣,只需運行swinstall程序,選擇需要的文件集,即可重新安裝。請參考Support Plus CDROM文檔(位CDROM上),DIAGNOSTICS 目錄及文檔的 .pdf文件。 lost+found 目錄 -------------------- 在異常電源故障或系統故障時,文件系統不會幹淨地關閉,可能需要用文件系統整個程序fsck手動幹預。如果fsck不能修理文件或目錄,fsck不會刪除,而是將詢問您是否希望修理問題,如果回答 yes,那可能就將i 結點 (指向文件或目錄的指針)移到lost+found 目錄中,並起一個名字,這個名字實際上就是i 結點號。 lost+found 中的這些登錄項所代表空間可能是已刪除的臨時文件,但它們的自由空間沒有記錄到文件系統上,或者只是丟失了名稱或與其余目錄聯系的普通文件和/或目錄。在這種情況下,系統管理員必須查看每個文件或目錄的內容,以確定保存的是什數據(如果有),否則這些文件將佔用空間,但卻沒有任何用途,並可能導致文件系統的不斷增大。 卸載磁盤 --------------- HP-UX 通過讓目錄完成雙倍的任務,將獨立的磁盤連接成一個文件系統,稱為根(root)(以/符號表示)。使用mount命令,一個目錄可以變成一個安裝點(與其它磁盤文件系統的邏輯連接),文件/etc/fstab 還可以間接地完成這個任務,因為mount 命令讀取檢查清單,以便指導將磁盤安裝到什地方。 比較古怪的是卸載磁盤將安裝點目錄返回本地狀態,存儲在該目錄中的文件也將返回。在mount 命令將該目錄的使用改為一個安裝點之,這些文件即處不活動狀態;也就是說,根磁盤上的文件仍存在,但由已安裝的磁盤“覆蓋”了安裝點目錄,因此看不到。 如果已安裝的磁盤被卸載,則根目錄中的文件將重新可見,這將導致一個常見的錯誤: 1. 有的用戶注意到文件不見了,然開始從磁帶裝載這些文件。 2. 文件被重新裝載(或者裝載了一部分文件),有的用戶注意到根文件系統已滿,或接近裝滿。 3. 有的用戶鍵入 bdf命令,發現第二個磁盤未安裝...然安裝。現在文件又恢復了原先的狀態,但根文件系統仍幾乎裝滿。 其間所發聲的變化是該目錄沒有作為一個安裝點在使用,但沒有紅色的標志顯示這種情況,這就是bdf 命令如此重要的原因: 已安裝的文件系統顯示在列表的右側。 這裡有一個技巧: 鍵入shutdown 0,使系統進入單用戶模式,顯示shell 提示符之(您不必登錄),檢查/etc/fstab文件,找到您的安裝點,第二個參數是安裝點目錄。 現在檢查每個目錄,看一看是否為空,如果不空,您需要根據情況清除目錄,因為除了根文件系統,沒有任何其它磁盤在單用戶模式下安裝。現在對每一個安裝點執行下面的命令: touch /mount_point/IamNOTmounted 這個命令將在安裝點目錄中創建一個零長度的文件,以提醒這是一個安裝點,不是通用的目錄。磁盤安裝完成,這個文件即從視圖中小時;當磁盤卸載時,文件重新恢復,提醒不要用備份磁帶。 其它大文件的位置 ============================ 不要查找大文件作為清除磁盤空間的方法,這一點很重要。這裡有兩個理由: -- 通常大文件、尤其是HP-UX 目錄中的大文件可能很重要,它的用途對新的系統管理員可能並不顯而易見。 -- 大文件可能不是問題,一個失控的腳本或程序可能會意外創建成千上萬的小文件。 所以要查找大不木,使用du 命令可以很容易地找到大目錄,下面是在/ 中快速找到最大目錄的方法: du -kx / | sort -rn > /var/tmp/du.list 注意-k 選項在10.x 中沒有文檔記錄(但可以工作),它將提供以1K、而不是塊(512字節)為單位的清單,下面是示例: 40396 / 15249 /etc 14474 /sbin 10494 /root 8666 /etc/lp 8557 /etc/lp/interface 6458 /etc/lp/interface/model.orig 3823 /root/tmp 3228 /sbin/fs 1682 /etc/lvmconf ... 對10.20系統,這是一個相當典型的情況。注意/etc是最大的目錄,然是/sbin。但是,如果在根文件系統中有非HP-UX的目錄,必須將其撇開,因為它們不屬這個統計(非常重要的文件系統,應當將它們移到另外一個邏輯卷中,如有必要,可以使用一個符號保持 /filesystem_name 就位。 例如: 140630 / 100234 /cadcam 15249 /etc 14474 /sbin 10494 /root 8666 /etc/lp 8557 /etc/lp/interface 6458 /etc/lp/interface/model.orig 3823 /root/tmp 3228 /sbin/fs 1682 /etc/lvmconf ... 在上面的情況下,目錄/cadcam 非常大,當然不屬 /目錄。有一個外加的磁盤,上面有不同的目錄,所以為cadcam創建一個新目錄,將目錄和文件移到新磁盤上,刪除舊的目錄和文件,然創建一個符號鏈接: mkdir /extra/cadcam cd /cadcam find . | cpio -pdlmv /extra/cadcam cd $HOME rm -rf /cadcam ln -s /extra/cadcam /cadcam 一個替代方法是只在新磁盤上創建一個全新的cadcam 卷,將其安裝到一個臨時的安裝點下,然復制文件。確認復制完成(ls -R 計算文件和目錄),刪除舊文件,在/cadcam 目錄中安裝新卷: mount /dev/<new_volume> /mnt cd /cadcam find . | cpio -pdlmv /extra/cadcam cd $HOME rm -rf /cadcam/* umount /mnt mount /dev/<new_volume> /cadcam 文件返回原處。如果跳過rm -rf 步驟,那舊的磁盤空間將不被恢復,只要/cadcam作為安裝點使用,它就不可見。正常情況下,在一個目錄作為安裝點使用時,文件和目錄不可見。但甚至在安裝時,原磁盤上安裝點以下的文件都可以用一個ncheck命令看到。下面是一個示例: # mkdir /xyz # touch /xyz/testfile # mount /dev/dsk/cdrom /xyz # ls /xyz ABC.TXT;1 DEFGHI;1 .... # bdf / Filesystem kbytes used avail %used Mounted on /dev/vg00/lvol3 99669 43283 46419 48% / # ncheck /dev/vg00/lvol3 | grep /xyz /xyz/testfile 所以即使在/xyz安裝點上面安裝了CDROM,在安裝點下面也有一個不可見的文件(/xyz/testfile)。ncheck *需要* 設備文件而不是安裝點,它將列出該卷上的每一個文件。 因此,如果已經將部分文件復制到了新卷上,則安裝新卷,並注意復制文件沒有造成磁盤使用減少,ncheck將顯示文件仍在已安裝的卷下面。當舊文件被刪除,磁盤空間將被收回。對各個安裝點運行一次ncheck 測試,看一看隱藏文件是否仍躲在某個安裝點下面,這是個不錯的主意。 數據收集文件 --------------------- 惠普的 PerfView Analyzer 收集有關系統性能和任務的信息,這些文件可以在/var/opt/perf/datafiles 中找到,共有5個文件,全都以log開頭。日志文件的增長受/var/opt/perf/parm中值的限制,通常除進程之外為10 meg,設置為20 meg。狀態文件在/var/opt/perf中。使用du命令可以快速檢查這些目錄的大小,如果沒有設置收集限制,數據收集文件的尺寸可以迅速增長。 核心文件: ----------- 讓我們從似乎處處可見的文件開始: core、a.out 和*.o 文件。核心文件是在一個程序異常終止,在當前的工作目錄下產生的,一般是通過部分非由程序所預期的錯誤條件,或者更小程度上通過接收某些信號。 盡管這些核心文件對一個正在設計或支持特定程序的程序員來說可能很有用,但通常這些文件要浪費空間,可以刪除。核心文件可以是幾千字節,也可以是很多兆字節大。下面這個命令可以加到cron 登錄項中,以定期刪除核心文件: find / -name "core" -exec rm {} \; 是否有一種方法可以避免核心文件的產生?實現這個目標有兩種方法。核心文件的創建過程是內核的一部分,它只是吸收程序內存中的所有內容,將這些內容作為一個'core'文件寫入當前目錄中。為了避免這種情況的出現,請執行下面的步驟: cd <to_someplace_where_core_files_shouldn't_be> touch core chmod 0 core chown root core 現在核心文件不能創建,因為任何用戶都沒有文件許可(除超級用戶之外),並且由文件為根所有,因此用戶不能修改。它是一個零長度的文件,因此不佔用空間。為避免出現有關不能刪除core 目錄的cron 信息,請將上面的find 命令改為: find / -name "core" -type f -exec rm {} \; 但比較簡單的方法是使用POSIX shell 內建的ulimit。正常情況下,ulimit是一個編程接口(手冊頁的第2部分),但對ksh 和 sh-posix,可以非常方便地在命令行上修改。ksh 沒有全部的選項(它只支持可以創建的最大文件尺寸),而POSIX shell則有很多選項。如果要將核心文件限制為零,則使用: ulimit -c 0 >從現在開始,從這個shell提示符下啟動的任何進程產生的核心文件長度都將是零。嘗試用下面的步驟(使用POSIX shell)進行驗証: ulimit -c 0 sleep 500 & ps <find the PID> kill -3 <PID_for_sleep> 這個步驟將產生一個零長度的核心文件。 a.out 和 *.o 文件 ------------------- 通常編程之遺留的其它文件是a.out 和以*.o 結尾的文件(編譯但未鏈接的文件),這些文件經常被繁忙的程序員遺失在各個不同的地方。一個比較禮貌的通知用戶有關這些文件問題的方式就是向每一個用戶發送一個電子郵件信息,其中包含這些文件的清單: find /home -name "a.out" -print > aout.list find /home -name "*.o" -print > o.list 然將這些清單發送給不那有條理的程序員,以清潔他們的磁盤空間。如果這種努力不成功,可以對前面的核心刪除命令進行修改,將名稱從"core"改為"a.out",盡管您可能希望增加一個按期分類選項,以查找只刪除30天以上文件的命令。注意不應當刪除應用程序(例如Oracle)或HP-UX目錄(例如langtools)中的任何*.o文件。 HP-UX 假脫機打印程序 ------------- 要檢查的目錄是: /var/spool/lp/request。每一台打印機都將有一個目錄,如果這些目錄中的大文件幾分鐘之前創建的,則可能表明假脫機程序有問題。 打印機可能被禁用,導致請求目錄被填滿。此外,管理員可能修改並忘記刪除實際上並不存在的測試打印機。確認lpstat -v 的報告和/var/spool/lp/request 中的目錄是相同的, lpstat -v 清單顯示的是假脫機程序已知的打印機,因此如果是/var/spool/lp/request 中的其它目錄(或文件),那它們就不應當在這裡。 同樣要檢查/var/adm/lp/log中的日志文件...它們是可選的,但是啟動之,它們的增大將沒有限制,這些文件是log、oldlog 和lpd.log。lpsched -v 用啟動lp記錄,盡管惠普的JetDirect軟件總是利用接口腳本記錄信息。 UUCP ---- 要檢查的另外一個區域是 uucp的目錄。與lp 假脫機程序一樣,這個目錄可以非常動態,保存其它結點的流量,或者只是使用uucp 發送或接收的各種文件的倉庫,這個目錄是: /var/uucp 要查看的位置是: Admin.,一般來說audit文件的增大取決流量;Log.,其中保存了所有的日志文件,以遠程機器的名字命名的目錄允許訪問這台計算機。 郵件 ---- 最,/var/mail是一個可以意外地突發性增大的地方,非常大的文件可以輕鬆地(實在是太輕鬆了)地通過電子郵件發送給系統上的用戶,這個目錄可以非常快地膨脹。向分發清單中的每個用戶發送一個大文件將導致同一個文件的多個備份保存到每個用戶的郵件文件中,從而使/var/mail 迅速增大。注意/var/mail 上的限額工作不是很正常,因為傳送代理程序將把限額問題作為軟錯誤處理,這可能會導致電子郵件的傳送要重試16到32次,如果郵件相當大,它所產生的網絡流量就會非常大。可使用nagware (自動電子郵件信息)提示用戶電子郵件文件過大。 其它有趣的文件 ----------------------- 有一個很有趣的目錄叫/usr/newconfig,它包含一些很有用的文件,也就是說未被編輯的(已知可以工作)自定義文件,例如gettydefs、inittab、passwd 等等。如果/etc目錄中的這些關鍵文件中有一個損壞(例如inittab),就可以從/usr/newconfig中復制已知可以工作的版本,這樣系統就可以重新聯機。 /users 或 /home 目錄 ------------------------- 那那些以測試文件或其它不必要的數據濫用他們的文件空間的用戶怎樣呢? 首先,這些文件在什地方?最簡單的回答就是檢查/home 目錄,一個很好的方法是使用du命令,下面是一個示例: du /home 12 /home/rst 480 /home/wpw 2 /home/jes 3308 /home/djs/nova-files 10442 /home/djs 2 /home/mda 6 /home/jws 2 /home/gfm 2 /home/gedu 12 /home/jam 12 /home/blh 11016 /home 左邊的數字是度量的塊或512字節數,這些值沒有KB或MB更有意義,因此您可以使用-k (沒有文檔記錄,但可以在10.x 下工作)選項。du 命令顯示目錄中的磁盤使用情況,而不是各個文件的使用情況,這是跟蹤磁盤空間問題的第一步。 現在,您會注意到有些文件不是非常有趣,例如/home/mda (2 個塊或1 KB),那我們如何將清單限制為比較有意義的數字,例如大5 MB的目錄? 好了,du命令使用左對齊的數字,因此標準的排序命令不會產生需要的結果。首先使用du 和sort -r -n 組合命令列出最大的目錄。在這種情況下grep 更有用,下面是一個示例: du -kx /home | sort -nr | grep ^....[0-9] sort 命令指出: 以逆序排序,數字為左對齊;grep 模式說明: 從第1欄開始(^),跳過4欄(點是無關位置),然在第5欄包含數字字符([0-9])時才匹配,因此應用上例中的上述命令產生如下的結果: du /home | sort -r -n | grep ^....[0-9] 6345 /home 5221 /home/djs 這通常更易閱讀。現在很明顯/home/djs 是/home 中最大的目錄(5,221 KB或大約5 MB)。另外一個選項是創建一些簡單的腳本以megs 為單位顯示目錄: #!/usr/bin/sh # Usage: # dus <starting-directory> # # Show usage in directories measured in megabytes (less than 1024 bytes # are not shown) # # Measurement is displayed in megabytes (1024*1024). # The Kbyte from du -k value is divided by 1024. # du -kx $1 | awk '{printf "%10.1f %s\n", $1/1024, $2}' (-k 在10.20下沒有文檔記錄 - 它以KB為單位報告尺寸) 發現了出乎意料的大目錄之,您可以用下面的命令,以大小的順序列出文件: ll | sort -nrk 5 | more 這個命令顯示以字節數排序的文件,最大的文件排在最前面。下面是腳本lls (排序的長列表),它按照大小對文件進行排序: #!/usr/bin/sh # # Usage: lls [optional directory or file spec] # # Long listing sorted /usr/bin/ll -aHF $@ | sort -nr -k 5 | more 作為一個示例: lls /tmp -rw-r--r-- 1 root other 2109440 May 17 15:46 blh.tar -rw-r--r-- 1 root other 316916 Jun 2 00:36 foo2 -rw-rw-rw- 1 root other 260619 Mar 9 05:03 catalog.hp -rw-r--r-- 1 root other 242044 Sep 24 1994 shoe1.tif -rw-r--r-- 1 root other 190009 Jan 21 1995 cop_man.ps -rw-r--r-- 1 root sys 124891 Jan 29 1994 update.log2 -rw-r--r-- 1 root sys 79228 Jan 29 1994 update.log1 -rw-r--r-- 1 root other 48998 May 24 18:11 newsrc.orig2. -rw-r--r-- 1 root other 48998 May 23 23:33 newsrc.orig. -rw-r--r-- 1 root other 46514 Aug 28 16:51 oldnewsrc. -rw-r--r-- 1 root other 46514 Aug 21 15:10 newsrc. -rw-r--r-- 1 root other 39525 Jan 21 1995 cop-user.sam -rw-r--r-- 1 root other 22088 Sep 11 1994 tif. -rwxr-xr-x 1 root other 20480 Nov 22 1994 set_disp* -rw-r----- 1 root other 20131 Mar 19 13:49 gtest -rw------- 1 root other 17246 Aug 21 17:08 gpm. -rw-rw-rw- 1 root other 15185 Jul 24 12:02 stm.log -rw------- 1 root other 12949 Aug 23 15:39 netscape-history. 如何查找大文件而不是大目錄?find 命令有一個選項,它可以塊或字符數為單位搜索文件的大小。例如,下面的命令可以查找所有大1 MB的文件: find / -size +2000 | pg find / -size +1000000c | pg 其中第一種形式指定2000 個塊 (2000 x 512 字節 = 大約1 MB),第二種形式將查找大1,000,000 字節的文件。在find 的手冊頁的開始部分中介紹,使用+號表示大或等。您可能希望將輸出從通過管道導向pg (或者more命令)改為重定向到文件中,例如: find / -size +2000 > /tmp/bigfiles 有些文件需要保留,例如/stand/vmunix 和/stand/vmunix.prev 通常大1 MB,但是不要刪除它們!刪除這些文件,系統重新啟動將非常困難(部分新的系統管理員或者有心的用戶可能已經發現了這一點),這些都是系統啟動時需要的最重要的文件。 日志文件 - 信息與大量空間! ----------------------------------------- 很多日志保存在 HP-UX系統中,大部分的日志膨脹沒有限制,它可能會產生惡名卓的"file system full(文件系統已滿)" 信息。到目前為止,根文件系統最為關鍵,因為很多HP-UX 進程依賴擁有部分可用空間,包括日志文件的空間,其中的許多日志文件是可選的,不在缺省系統中創建,但確實存在幾個日志文件,應當對它們進行監視。 部分非常常見、能夠快速膨脹的日志文件包括: /var/adm/syslog/syslog.log (網絡和系統日志) /var/adm/syslog/mail.log (電子郵件日志) /var/adm/diag/LOG* (診斷日志) /var/adm/wtmp (登錄/注銷等) /var/adm/btmp (失敗的登錄嘗試) /var/adm/syslog/mail.log (郵件日志) /var/adm/lp/log (lp 日志) 一般來說,大部分的系統日志保存在/var 中,而其中的大部分保存在/var/adm中,但與所有的HP-UX 一樣,有一些例外的情況,比如/etc/rc.log和 /etc/shutdownlog。 大日志文件制造者之一是可選的系統監視程序Perfview Analyzer,它使用Measureware 記錄計算機的活動。根據用量化“有趣”進程的設置,日志可能膨脹得非常之快。狀態文件可以不受限制地增大。/var/opt/perf/parm 文件設置數據文件的尺寸限制: size global = 10.0, application = 10.0, process = 20.0, device=10.0 上述設置的尺寸單位是兆字節(MB)。 在下表中有一個與HPUX 有關的日志文件清單,可能還有其它的日志文件,但大部分都應當在/var 中。SAM有一個很棒的日志文件整理實用程序,如果/var 已滿,SAM日志文件整理就可能不工作,因此您需要手動瀏覽下面的清單,調整部分文件。 /var/adm/sw/swcopy.log /var/adm/sw/swagentd.log /var/adm/sw/swagent.log /var/adm/sw/swinstall.log /var/adm/sw/patch/PATCH.log /var/adm/sw/swmodify.log /var/adm/sw/swremove.log /var/adm/sw/swpackage.log /var/adm/sw/swconfig.log /var/adm/sw/swverify.log /var/adm/sw/swreg.log /var/adm/cron/log /var/adm/cron/OLDlog /var/adm/syslog /var/adm/syslog/mail.log /var/adm/syslog/syslog.log /var/adm/syslog/OLDsyslog.log /var/adm/syslog/mail.logSAMTRM /var/adm/lp/log /var/adm/lp/oldlog /var/adm/ptydaemonlog /var/adm/OLDsulog /var/adm/rpc.statd.log /var/adm/rpc.lockd.log /var/adm/automount.log /var/adm/vtdaemonlog /var/adm/shutdownlog /var/adm/rc.log /var/adm/sulog /var/tmp/swagent.log /var/tmp/gatherftp.log /var/tmp/sam_remove.log /var/spool/lp/lpd.log /var/spool/lp/lpana.log /var/spool/lp/log /var/spool/sw/swagent.log /var/ppl/log /var/opt/sharedprint/errorlog.test /var/opt/dce/config/dce_config.log /var/opt/dce/rpc/rpcd.log /var/opt/dde/dde_error_log /var/opt/hppak/hppak_error_log /var/opt/perf/datafiles/logindx /var/opt/perf/datafiles/logglob /var/opt/perf/datafiles/logappl /var/opt/perf/datafiles/logproc /var/opt/perf/datafiles/logdev /var/sam/log/samlog /var/sam/log/samlog.old /var/sam/log/br_log /var/adm/wtmp /var/adm/btmp wtmp 需要用下面的命令置零: cat /dev/null > /var/adm/wtmp 或者 > /var/adm/wtmp cat /dev/null方法不使用命令rm、touch、chmod、chown、chgrp創建空文件,而是保留舊文件的所有特性。注意在正在運行的系統上對/var/adm/wtmp 調零可能導致使用who 命令時報告錯誤,這些錯誤是由who 沒有找到當前登錄的用戶引起的。整理/var/adm/wtmp 的最好方法是在單用戶模式下進行。不要對/etc/utmp調零...這項工作是在啟動時自動完成的。如果對/etc/utmp 文件調零,就會出現錯誤信息,您必須通過最低層shell 登錄,唯一的補救方法 (因為 utmp 已不在)就是重新啟動。 而且,SAM 已經得到增強,可以執行很多的大文件搜索功能,並在HP-UX 9.0及以上版本中提供了其它的磁盤空間管理工具。