站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

Chapter 2-Dealing with Files and Filesystems

Hack 13 Find Things

Which --- locate a program file in the user's path:在使用者的路徑 (echo $path) 中尋找該程式。

 > which cp
 /bin/cp

Whereis --- locate programs:找尋程式位置 (二進位檔 -b、說明檔 -m、原始程式 -s)

 > whereis cp
 cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/src/bin/cp

Whatis --- search the whatis database:查詢某個指令的用途

 > whatis cp
 cp(1) - copy files

Find --- walk a file hierarchy:尋找檔案

 >find . -name bac    //尋找所在目錄下檔名為bac
 ./test/bac

Grep --- print lines matching a pattern:尋找檔案內關鍵字

 > grep -n NO /etc/rc.conf     //列出/etc/rc.conf內有NO這個關鍵字內容並顯示行數
 7:usbd_enable="NO"

Hack 18 DOS Floppy Manipulation

 >less /etc/fstab       //查看一下 fstab 您可看到目前檔案系統
DeviceMountpointFStypeOptionsDumpPass
/dev/ad0s1bnoneswapsw00
/dev/ad0s1a/ufsrw11
/dev/ad0s1e/tmpufsrw22
/dev/ad0s1f/usrufsrw22
/dev/ad0s1d/varufsrw22
/dev/acd0/cdromcd9660ro,noauto00

指令範例

 #mount /cdrom                        //掛載 CD-ROM 因為 /etc/fstab 已有設定因為只要執行此指令即可掛載 CD-ROM
 #mount -t cd9660 /dev/acd0 /cdrom    //若 /etc/fstab 內沒設定就執行此指令來掛載 CD-ROM 或下一行指令也可
 #mount_cd9660   /dev/acd0 /cdrom     //掛載 CD-ROM 方法二
 #umount  /cdrom                      //卸載 CD-ROM
 #mount -o rdonly /usr                //設定掛載 /usr 並使用唯讀掛載
 #mount -f /usr                       //強制掛載 /usr (有些分割區或許發生問題所以寫入前必須先 fsck 但若不想執行 fsck 可採用 -f 強制掛載)
 #mount -a                            //掛載所有列於 /etc/fstab 內的檔案系統

補充

預設只有 root 能掛載 (mount) 檔案系統,若要讓使用者也能掛載檔案系統需執行如下指令

 #sysctl vfs.usermount=1
 vfs.usermount: 0 -> 1

編輯自動 Format Floppy Process

 %echo $path            //確定您的 path 有載入 $Home/bin,若您的家目錄沒有 bin 資料夾就建立它吧
 $HOME/bin

編輯檔案名稱為 ff 內容如下

 %vi ff                 //編輯檔案名稱為 ff 內容如下
 #!/bin/sh
 #this script formats a floppy with FAT12
 #that floppy can also be used on a Windows system
 #first, remind the user to insert the floppy
 echo "Please insert the floppy and press enter"
 read pathname
 #then, proceed with the three format steps
 fdformat -f 1440 /dev/fd0
 bsdlabel -w /dev/fd0 fd1440
 newfs_msdos /dev/fd0
 echo "Format Complete."

記得加上 x 權限讓 ff 能執行

 %chmod +x ff           //記得加上 x 權限讓 ff 能執行

Hack 21 Manage Temporary Files and Swap Space

本章的重點在於管理 Temporary Files 也就是 /tmp 及 Swap Space

管理 /tmp 方式一:開機時清空 /tmp

以下設定完成後當系統重新開機時將會自動清空 /tmp 資料夾內所有檔案

 %vi /etc/rc.conf                 //修改 rc.conf 加入如下一行
 clear_tmp_enable="YES"

管理 /tmp 方式二:定期清空 /tmp

定期自動清空 /tmp,因為 /etc/periodic/daily 內的 110.clean-tmps 預設是不啟動的,所以可透過修改 periodic.conf 來達成每日自動清空 /tmp 的目地

 %vi /etc/default/periodic.conf   //將 110.clean-tmps 由 NO 修改為 YES
 daily_clean_tmps_enable="YES"      

管理 /tmp 方式三:搬移 /tmp 至 Memory

將原本存在於硬碟的 /tmp 資料夾轉移存放至 Memory 來達成管理 /tmp 的目的?因為 Memory 的內容是易變的也就是當你重新啟動時 (系統會清空 Memory 的內容),也就能達成自動清除 FileSystem 的優勢。並且可以提高清除及處理效率因為 Memory 存取時間遠比硬碟存取時間快。

先確認您有足夠的 Memory 來執行這動作

 %dmesg |grep memory                      //適用於剛開機沒幾天
 %less /var/run/dmesg.boot |grep memory   //適用於開機很久沒關機過的

確定您的核心 (Kernel) 是有支援 MD (Memory Disk) 功能,下例我的核心 (Kernel) 名稱叫 newkernel

 %grep -w md /usr/src/sys/i386/conf/newkernel
 device          md     #Memory "disks"         //確定核心中 MD (Memory Disk) 功能並未註解掉

修改 /etc/fstab 以達成搬移 /tmp 至 Memory,下例為 Mount 64MB /tmp 至 Memory

 %vi /etc/fstab
 /dev/ad0s1e   /tmp      ufs   rw           2    2     //修改前
 md            /tmp      mfs   rw,-s64m     2    0     //修改後

重新掛載 /tmp 即可

 %umount /tmp     //若無法 umount 則 sync 後 reboot
 %mount /tmp
 %df -h /tmp      //查看 /tmp 掛載的變化
 /dev/md0            63M    36K    58M     0%    /tmp

擴充 Swap 空間

這方法我想適用於當您發現當初規劃的 swap 空間不敷使用時想增加 swap 空間應該如達成呢?以下就是在 /usr 下切一個空間來跟本來的 swap 相加,以下實作方法適用於 FreeBSD 5.x 而使用 FreeBSD 4.x 的朋友,請參考 [Handbook Chapter 11 Configuration and Tuning]

使用 swapinfo 或 swapctl -lh 查看目前 swap 空間二者差異在於 swapctl 加上 -lh 顯示單位為 MB

swapinfo 顯示 KB

 %swapinfo      
 Device          1K-blocks     Used    Avail  Capacity
 /dev/ad0s1b        498472    16344   482128     3%

swapctl -lh 顯示 MB

 %swapctl -lh
 Device:       1048576-blocks      Used:
 /dev/ad0s1b          486         15

建立 128MB swapfile 於 /usr/swap0

 %dd if=/dev/zero of=/usr/swap0 bs=1024k count=128
 128+0 records in
 128+0 records out
 134217728 bytes transferred in 4.405036 secs (30469156 bytes/sec) 

修改 /usr/swap0 權限

 %chmod 600 /usr/swap0

使剛才建立的 /usr/swap0 馬上生效,以下為參數說明:

執行下列指令來使 /usr/swap0 馬上生效

 %mdconfig -a -t vnode -f /usr/swap0 -u 1 && swapon /dev/md1 

修改 /etc/rc.conf 以便系統重新開機時便自動啟動 /usr/swap0

 %vi /etc/rc.conf
 swapfile="/usr/swap0"         //加入此行

完成後可在利用 swapinfo 或 swapctl -lh 查看目前 swap 容量

swapinfo 顯示 KB

 %swapinfo
 Device          1K-blocks     Used    Avail Capacity
 /dev/ad0s1b        498472    16344   482128     3%
 /dev/md1           131072    18336   112736    14%
 Total              629544    34680   594864     6%

swapctl -lh 顯示 MB

 %swapctl -lh
 Device:       1048576-blocks      Used:
 /dev/ad0s1b          486         15
 /dev/md1             128         17

也可利用 systat -swap 1 來隨時觀察 swap space 使用情形 (1 為更新秒數間隔)

 %systat -swap 1
                /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
 Load Average   ||||
 Disk 1K-blocks Used  /0%  /10% /20% /30% /40% /50% /60% /70% /80% /90% /100
 ad0s1   498344 30976  XXXX
 md1     130944 32560  XXXXXXXXXXXXX
 Total   629288 63536  XXXXXX
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com