返回   ShareGet 社群討論 > ≡ 電腦網路 ≡ > □ -- Unix & Linux

發表新主題 回覆
 
主題工具 顯示模式
  #1  
舊 2005-12-04, 12:57 PM
kazaya 的頭像
原來傷害最深的
 
註冊日期: 2004-05-31
來自: 是那些不肯同你說真話的人
文章: 8,847
給予: 45 | 感謝 222 | 共 123 篇
積分: 25189 | 給分能力: 98
[轉貼] 第四章 Linux Filesystems,Filesystem Hierarchy Standard

第四章 Linux Filesystems,Filesystem Hierarchy Standard
一、 Create partitions and filesystems(fs)
1. 磁碟構造:
˙Cylinder(磁柱):0起算,1 Cylinder=255 Heads.
˙Head(讀寫磁頭):0起算,1 Head=63 Sectors.
˙Sector(磁區):1起算,1 Sector=512 bytes ,而磁碟分割是以磁柱為
計算單位,第一個磁柱(0)的第一個磁區(1)放MBR ( 管理開機
紀錄),故做partition時,第一個分割區設定範圍是由磁柱1
開始起算設定的。
Ex:2434 cylinders的hard disk,其大小為多少G?
2434 × 255 × 63 × 512 = 20020331519 bytes = 20GB
<note> 硬碟的sector,是屬於physical unit (物理或實體單位),在硬碟
   一出廠時即已固定,無法做更改。而block是屬於logical unit,
   可於formatting時,用mke2fs來更改系統預設值。

2. 分割區:
(1) IDE介面:
一般主機板上至少兩個IDE介面(IDE0.IDE1),每個IDE介面可安置兩個devices,故有四個devices可供安置,devices可為硬碟、光碟機、燒錄器等。
IDE0 (primary): hda (master) → primary master
hdb (slave) → primary slave
IDE1 (secondary): hdc (master) → secondary master
hdd (slave) → secondary slave
<說明> h: 表示為IDE介面。
s: 表示為SCSI介面。
d: disk 磁碟機。
      a: 表示第一個裝置,一般為硬碟,b.c.d 依此類推,至於其後所接數字是代表為第幾個分割區 (partition number)。
       Ex: hda2表示第一個IDE介面上的第一顆硬碟的第二個分割區。
     hdc3表示第二個IDE介面上的第一顆硬碟的第三個分割區。
  hdd一般為光碟機之類的裝置。

     (2) partition:
Primary partition:max → 4個(編號1-4)
Extended partition:max → 1個(編號1-4) 。
Logical partition:編號5開始至16 (redhat)。
Openlinux為5 – 60。
以上ID皆不可重複。
<note> extended partition本身不可存放data,而須由其下的logical partition來存放。

3. 檔案系統 (fs):作業系統用來存取的資料格式。
Linux支援很多的fs,如msdos、vfat、ntfs、iso9660、nfs等等,不過
前提是該檔案系統需被掛載到linux下才行。
(1) partition types:
Minix:81→older linux.
Linux swap:82
Linux(native):83→安裝linux時,最少須有兩個分割區,即82.83。
Windows:FAT32(ob). NTFS(07)…。
(2) linux可用的檔案系統 (83)
˙ext2 (extended second file system)
˙日誌式fs ( journaling ) 分以下幾種:
ext3 (ext2+journaling):Kernel 2.4才開始支援,Red Het是最早使用ext3檔案系統的版本。
reiser:SuSE研發,小檔案系統適用,大檔案系統可用以下兩個:
XFS:SGI公司研發。
JFS:IBM研發。
<note>日誌式:將系統所做的更動,像日記一樣記載下來,並存放於硬碟的journal file,如遇不正常關機或電力中斷,在reboot後,會自動於journal file檢查記錄,故可順利讓系統開機,並確保資料不會遺失。
若是ext2,則須等待系統檢查有無壞軌及修復的時間。
<note>ext2 fs會先將系統所做的更動暫存至記憶體內,再伺機回存硬碟,以增快系統效率,但一旦碰上不正常關機時,可能會造成快取緩衝區的資料遺失。

以下指令 --- fdisk mkfs fsck 都只有root才有權執行。
4. fdisk : create partition
(1) # fdisk –l /dev/hda
→顯示partition table (包含未掛載的partition),device若沒寫,預設為hda。如:
# fdisk –l
(2) # fdisk –s /dev/hda3
→ 顯示第三分割區大小。
(3) # fdisk /dev/hda
→ 對第一顆硬碟執行磁碟分割。
m:print the menu.
p:print the partition table.
n:add a new partition.
d:delete a partition.
t:change a partition’s system id.
l:list known partition types.
w:write table to disk and exit.
q:quit without saving changes (或ctrl+c).
(4) 一般PC上的BIOS,只能抓取1024cylinders內的範圍(約8.4G),所以儘量將 /boot放置在8.4G以前,但若 /boot超出此範圍,不妨加入LBA32 (Large Block Adress)這個參數試試。

5. mkfs: create filesystems (formatting),支援ext3.ext2.vfat.msdos等。
當硬碟分割好後,還無法使用,尚須製造一檔案系統給它,即所謂的格式化。
例:# mkfs –t msdos /dev/fd0
  → 未用-t來指定欲格式化的檔案系統時,預設為ext2。
# mkfs –t ext2 –c /dev/hda2
→ mkfs –t ext2可用mke2fs及mkfs.ext2代替。
 -c: check the device for bad blocks before building the fs.
# mke2fs –c /dev/hda3
# mke2fs –j /dev/hda3
→ 格式化成ext3的檔案系統。
# mke2fs –b 1024 /dev/hda3
→ 用-b (block)來指定區塊大小,系統有效區塊大小值為1024.2048.4096 bytes.
# mke2fs –i 1024 /dev/hda3
→ 指定inode大小為1024 bytes i≧b
# mke2fs –N inode數 /dev/hda3
     → 指定inode數。
# mke2fs –jb 2048 –c /dev/hda5
       → 格式化成ext3的檔案系統。
     註: 若要對已mount的分割區進行mkfs,記得先umount 該分割區。

二. Maintain the integrity of filesystems
在linux裡,每個分割區都有每個分割區的 fs,此fs中,與資料存取相關的基本結構如下:
super block -----------> inode block -------------> data block
super block存放著檔案系統的重要資訊,從super block裡就可取得檔案系統中的任何檔案資訊,然後再從inode block取得檔案實際存放的區
塊位置。所以我們需要存取任何資料時,都會先經過super block。


1. inode觀念:
(1) inode(index node索引節點): A data structure called an inode.
inode block為一data structure,其大小為128 bytes,inode block會指出檔案存放於硬碟的實際位置 、檔案擁有者和所屬群組ID、檔案存取權限、檔案大小、檔案連結數及時間相關訊息等,但真正的檔名並不儲存於此,而是存於上一層目錄中。
     

      
  inode number:a unique number associated with each filename . This number
is used to look up an entry in the inode table which gives
information on the type,size,permission,owners and location
of the file .
當我們要存取檔案於硬碟時,須要有一個inode number指標。在同一partition中,inode number是唯一的,也就是每個檔案目錄都有其唯一的inode number,但若不同的partition,其inode number便有可能產生相同的情形。
底下我們以 /etc/passwd作例子,來看看是怎麼樣的一個搜尋流程:
    首先我們需要的第一個 inode 是檔案系統根目錄 ( / ) 的 inode,我們
可以得到它的值在檔案系統的 superblock中,因而找到了根目錄的inode block ,最後找到了根目錄所在的區塊位置,接著從此區塊中可找到etc的目錄名稱及etc的inode number,因而找到了etc的inode block,
由此inode block中得到etc所在的區塊位置,再由此處得到passwd的
檔案名稱及passwd的inode number,接著找到passwd的inode block,
而由inode block的訊息得到passwd實際存放的區塊位置。

Ex: $ stat /etc/passwd →inode data structure (redhat)
→其內容中的Block:8,表示檔案占用block空間為
512×8=4096 bytes(8個磁區)

(2) block size(區塊大小)
資料的寫入是以block為單位,大小以byte表示,其有效的預設
為1024.2048.4096 bytes。
# tune2fs –l /dev/hda3 →可查出預設block大小、indoe數、block數…。

假設一檔案大小為1000 bytes,block為4096 bytes,則剩下的3096 bytes會浪費掉。又如檔案為5k,則會占用掉2個blocks。

(3) 綜合以上,inode大小 (bytes-per-inode)通常不能少於block size,而inode count、block count數量,理論上是以磁碟容量去除以他們的預設大小。
inode count意謂著能寫入的檔案數,而block為檔案寫入磁碟的最小儲存單位。
block越小,大檔案寫入速度慢,適合小檔案且數量多的系統。
block越大,大檔案寫入速度快,但對小檔案便浪費很多空間。

2. fsck:check and repair a Linux file system
於一般正常情況下,勿使用此指令,否則不小心會造成對檔案資料的
危害。故只有在系統出問題時,進入單人維護模式下才須使用到。其它使用fsck的時機,例如用fsck來check剛剛formatting的硬碟分割區有無問題等。
 <note>進入單人模式方式:
˙ # init 1
˙ 於lilo選單畫面下,按ctrl+x後,就會看到boot: 提示號,此時輸入如下:
     boot : linux single 或 linux –s (redhat尚可使用linux 1)
註: openlinux於boot: 提示號下輸入linux –s或linux single,
       接者會要求輸入root密碼,若不想在進入單人模式輸入密
       碼可修改 /etc/inittab。最後在成功進入後,記得先執行
       mount –o rw,remount / ,這樣才可修改檔案。
˙ 於grub選單畫面下,先用上下鍵選擇linux os,然後按e進入
     編輯,再用上下鍵選擇kernel那一行,再按e進入編輯,於該
     行最後面補上linux -s或linux single或 (記得要空一格),然後按enter,最後按b就大功告成了。
˙ 用光碟開機時,boot: linux rescue,進入提示號後,記得執行
# chroot /mnt/sysimage,這樣才可用root身分進行修改 (redhat)。
註: openlinux可藉由redhat的開機光碟進入rescue mode 。
    ˙ 若是使用磁片開機,則與第二點相同(boot : )。
    
fsck使用前提:該分割區fs要umount(root partition除外)或
該分割區fs要remount為read-only
Ex:# fdisk /dev/hda =>creat a new partition:hda6=>reboot
# mke2fs –j /dev/hda6
# e2fsck –c /dev/hda6 (-c:check bad blocks)
→ fsck –t ext2等於e2fsck,其可支援ext3 fs。
# fsck –a /dev/hda6
→ Automatically repair the file system without any questions.
# fsck –r /dev/hda6
→ Interactively repair the file system.
# mkdir /mnt/hda6
# mount –t ext3 /dev/hda6 /mnt/hda6
# cd /mnt/hda6 =>hda6目錄下會新增lost+found目錄。
當執行fsck時,若有檢查到bad blocks,會在lost+found目錄下顯示錯誤的、有問題的檔案及遺失的檔案。

When running fsck during system boot,the root partition is mounted in read-only,then running fsck and then the root partition is mounted as read –write.
All other partitions are checked before they are mounted.
root partition需先於其他partition作fsck。

3. df (disk free):
查詢硬碟分割區剩餘可用空間的指令,另外也可顯示系統目前已掛載
的檔案系統。
例:$ df –h
→空間大小使用單位,視字元長度而自動調整顯示單位(M.G..K)。
$ df –T
→多顯示fs type。
$ df –i
→顯示inode count。
$ df –t ext3
→只顯示fs type 為ext3者。
$ df –k
→以kilo bytes表示(預設),-m則是以mega bytes表示。

4. du (disk usage):df為針對分割區,du為針對檔案、目錄實際所占用的
block大小。
<note>du指令請以root login,因若為一般user,有些檔案權限會被拒絕,因而所看到的block size會不準確,但若只看自己家目錄便無所謂。
例:$ du –b ( 以bytes ) 為單位
→顯示當前目錄 ( 含子目錄 ) 所占用的block size,所以也可這樣寫 $ du –b .
$ du /etc
→顯示 etc目錄實際佔用的區塊大小,以kilo tytes為單位。
          $ du –a /etc
→包含檔案都列出。
$ du –s /etc
→display only a total.
$ du –lb若有hard link,會重複計算。
其它參數:-k、-m、-h同df用法。


三. mount and umount fs
1. Linux的fs與windows的fs不太相同,Windows下,每個分割區都有其磁碟機代號,從c: ~ z:,且各有其獨立的目錄,但在Linux下,所有partation都歸在 / (根目錄)下, / 有其自己的partition,而其它partition則被掛於 /下的目錄或子目錄中,此目錄或子目錄稱為mount-point,而將partition掛入mount point的動作便稱為mount (掛載)。
mount –t <fs-type> -o <options> device mount-point

2. Linux can mount a variety of fs , including
minix ext2 ext3 reiserfs
ntfs vfat msdos iso9660(CD-ROM)
nfs smbfs

3. mount –t <fs-type> -o options device mount-point
-o其後所接選項,有一些選項只有在 /etc/fstab內才有效用。
option:auto → 開機時自動mount ←→ noauto
exec → 讓程式能於掛載的fs上執行 ←→ noexec
suid → 讓可執行程式,能發揮suid及sgid效用 ←→ unsuid
user → 允許一般使用者掛載檔案系統 ←→ nouser
sync → 對mounted fs,建立同步輸入輸出,也就是讓磁碟與記憶體建立同步寫入的動作←→ async
ro → read-only
rw → read-write
dev → 解析fs上的字元裝置or區塊裝置。
         remount → attempt to remount an already-mounted file system.
defaults → rw,auto,nouser,exec,dev,suid,async。

4. # mount -t msdos /dev/fd0 /mnt/floppy
# mount –tr iso9660 /dev/cdrom /mnt/cdrom 等於
# mount –t iso9660 –o ro /dev/cdrom /mnt/cdrom 等於
  # mount –t iso9660 –r /dev/cdrom /mnt/cdrom
→ 上式未加唯讀選項亦可,因 /dev/cdrom or /dev/hdd is write-protected.
# mount –a =>將 /etc/fstab內所列檔案系統掛載起來(有noauto選項除外)。
→ 作試驗時,可先將 /etc/fstab內的檔案系統執行umount (單人模式下),然後再執行 # mount –a,看看能否remount。
# mount -t ext2 -o rw /dev/hda6 /mnt/hda6等於
   # mount –t ext2 –w /dev/hda6 /mnt/hda6
# mount –t ext2 –n /dev/hda6 /mnt/hda6
→ 如此做法,就不會讓 /etc/mtab出現掛載訊息。
 
5. 要umount (卸載)前,須切換目錄至非掛載目錄上,方可順利umount,以上面為例:
# umount /dev/hda6或 # umount /mnt/hda6亦可:
# eject /mnt/hda6直接退出光碟。
在做mount時,若沒用 -t指定fs-type,其實系統也抓得到,如下:
# mount /dev/fd0 /mnt/floppy =>用 # df –T 看看便知。
__________________
如果您覺得"文章小說討論區"所發的主題不錯
請不要吝嗇 在主題 " 點閱" 及 並給予 發文者一些鼓勵
---------------------------------------------
為了防止世界被破壞  為了保護世界的和平
貫徹下載與燒錄的邪惡  可愛又迷人的盜版角色
MP3....Program...  我們是穿梭在網際網路中的盜版大隊~~
拷貝 拷貝的明天正等著我們~~
就是這樣....喵~~@@
回覆時引用此文章
  #2  
舊 2005-12-04, 01:17 PM
kazaya 的頭像
原來傷害最深的
 
註冊日期: 2004-05-31
來自: 是那些不肯同你說真話的人
文章: 8,847
給予: 45 | 感謝 222 | 共 123 篇
積分: 25189 | 給分能力: 98
6. /etc/fstab:紀錄系統啟動時將自動掛載的檔案系統,共分六欄位:
/dev/hda3 /mnt/hda3 ext2 defaults 1 1
device mount-point fs-type options dump check(fsck)
備份程式
<說明><1>dump:備份整個fs,其值分1和0,當選擇1時,表示當磁碟分割區內資料有異動時,先cache在記憶體中,直到緩衝區滿了或系統閒置時,才寫入磁碟裡,其優點為加快系統執行效能,缺點為遇當機或不正常關機時可能會造成資料流失,因此選dump時,一般會配合第六欄位fsck來使用,一般若是Linux fs,其dump皆設為1,others則設0。

<2>check:分0、1、2
1:表開機時先做fsck的fs,因 / 須先於其它分割區,故設為1。
2:非 / 所在的fs要做fsck,則設為2。Ex: /boot
0:不做fsck。
在options中,若設defaults,則系統開機時會自動mount這些device,若是設noauto,如CD-ROM,則須下mount指令,如mount /mnt/cdrom或mount /dev/cdrom 才能將這些裝置掛載上來。
當我們在提示號下執行mount時,若 /etc/fstab中有紀錄,則mount時可mount device或mount-point,但若fstab內無記錄裝置訊息,則此partition(device)須按步就班mount。

當我們檢視 /etc/fstab時,會發現有個device為none,mount-point為 /proc,這是一個虛擬裝置,不存在於實體device上,但其可顯示記憶體內的訊息。
每個process都會在 /proc下的子目錄中,而系統訊息則會顯示於其下的檔案內。
例:root login tty2執行top指令,回tty1 login,接著執行 # ps aux 來查詢top的 PID(設為2367)
# ls /proc =>有個2367目錄。
# cd /proc/2367 然後用ls看其內容有cmdline.status.…
# cat cmdline =>顯示此process command line內容。
# cat status =>顯示程式名稱PID.PPID.UID.GID…

例:# cat /proc/cpuinfo
→檢試cpu廠牌、速度。
# cat /proc/interrupts
→中斷要求(IRQ值)
# cat /proc/ioports
→I/O Address
I/O port為device與cpu或device與memory(DMA存在時不須經cpu,而是直接與記憶體溝通,以加快效率)間溝通的管道。
DMA全名:Direct Memory Access
# cat /proc/meminfo
→記憶體訊息
# cat /proc/mounts
→系統目前已掛載的檔案系統。
# cat /proc/modules
→顯示目前核心已載入的模組,同 # lsmod
# cat /proc/swaps

7. /etc/mtab (mount table) 動態紀錄系統目前已掛載的檔案系統。
it is a listing of mounted fs presently.

8. 查詢系統目前掛載哪些檔案系統的方式:
(1) # cat /proc/mounts
(2) # mount
(3) # mount -l
(4) # cat /etc/mtab

<note> /etc/fstab是開機時自動mount的fs,若開機後手動mount fs, /etc/fstab內並不會顯示。
另外我們在看目前系統已掛載訊息時,以 /proc/mounts的資料最
    準確,因其不受mount –n 的影響。

9. umount:參數-a、-t、-n同mount。

四. hard link and symbolic link(soft link)
1. Symbolic link: ln –s來源檔 連結檔名
例:$ ln –s /etc/termcap slink =>shink:lrwxrwxrwx
$ ls –li /etc/termcap slink
可看出inode number不同,檔案權限、檔案擁有者及所屬群組不同,檔案大小、檔案修改時間不同。(以自己為主)
若刪除原始檔,則連結檔便無法連結。
當我們建立soft link file後,可用$ du –b . 觀看,發現家目錄所占用的block size不變(與建立前比較) 。另外soft link可應用於目錄,且可在不同partition或fs上使用。

2. hard link: ln 來源 目的
長格式中的連結數,即是以hard link為主。
hard link file其inode number指向來源檔案的inode number。
例:$ ln /etc/passwd hlink (設 /etc及 /home為同一分割區)
$ ls -li /etc/passwd hlink
很明顯看出hard link file的inode number、檔案權限、檔案擁有者及所屬群組、檔案大小、檔案修改時間等,都與來源檔案相同。
$ du –b =>家目錄所占block size增加。
$ du –b / =>系統所占block size不變。
   另可用家目錄下的檔案做hard link來測試:
$ ln file hlink
$ du –b =>家目錄所占block size不變。
故做hard link時,若link到其它目錄下的file時,hard link file所在目錄其block size會增加,若link本身dir下的file,則不變。
<note>hard link不可應用於目錄,且在不同partition或fs上無法使用。
   另外hard link中,無論來源檔或連結檔,只要還存在一個檔案,此inode number所對應的data block便不會消失,須直到所有檔案刪除後,此空間才釋放出來。

 ˙不論hard link或soft link,當更改link file的內容時,來源file也會跟著改 (但要有適當的權限) ,而在windows下是無法辦到的。
 ˙做link時,未寫出link file名稱,則以來源file之名做為link file之名,但來源與目的不可是同一目錄。
 Ex:$ ln –s /etc/passwd
→用ls看,會有passwd的link file。
$ ln –s /var/spool/mail /home
→ /home下會有mail的link file(目錄)。

五. Managing disk quota (硬碟限額管理)
quota用來對user或group做不同的或相同的使用空間限制,且quota設定,只能針對partition做限制,而無法針對partition下的某個目錄設限。
現在以 /home partition為例,來說明quota的設定:
1. 開啟quota功能:
# vi /etc/fstab
→ 於 /home所在行增加defaults,usrquota,grpquota,然後存檔離開。
2. reboot (RedHat 7.1核心2.2版,在quotacheck後,才reboot)
3. 掃描檢視磁碟空間使用情形:
若系統預設有開啟quota,則在執行檢查前需先關閉quota:
# quotaoff –a

   再來才可執行quotacheck:
# quotacheck –guv /home
→ 於 /home下會產生aquota.user及aquota.group這兩個紀錄檔,記載
  著user與group在 /home下的使用空間情形。
    核心2.4以前為quota.user及quota.group。
<說明>-g:check group於 /home下所占空間 (檔案數、目錄數)。
-u:check user於 /home下所占空間 (預設)。
-v:顯示執行過程。
-a:check all file systems in /etc/mtab
˙系統執行quotacheck時,會先將檔案系統 remount成read –only,scan結束後,再remount回read –write。
  ˙若系統已執行quota,則須先執行quotaoff –a。
 ˙若有錯誤訊息,可用-m強迫check。
# quotacheck –guvm /home

4. 建立quota限額
# edquota -u barry (-g group) = # edquota barry
blocks soft hard
4 2000 2500
單位:KBytes
blocks:已經使用的data blocks空間,在此為4kb。
soft:達此限制時,系統會開始提出警告。(搭配grace使用)
hard:最大空間限制,當超過此限制,即無法再儲存data。
<note>執行quotacheck成功的partition,在執行edquota時皆會顯示。
   另外若針對群組做quota,需將加入此group的user,設定group
為其預設群組。
# edquota –up barry mary (-gp group01 group02)
→ 將barry的quota限額,copy一份予mary。-u為預設,可省略。
  另外需注意,quota限額的複製需在同一分割區下。
<註>多user要套用barry的quota的做法,可事先編輯一檔案,設為/tmp/file,然後將使用者放進此檔內,如:
# vi /tmp/file
user01 user02 user03 user04 user05
再執行:
# edquota –up barry `cat /tmp/file`

# edquota –ut = # edquota –t (edquota -gt)
Block grace:10hours(預設7days),Inode grace:0
表示使用者儲存資料超過soft時,便開始計時,在此10hours內,user只要不超過hard限制皆可儲存。一旦超過10hours便無法再存data進去。
Inode grace:0 表示無限制。

5. 啟動quota:
# quotaon –a
→於 /etc/fstab內,有磁碟限額者都啟動。
# quotaon –u /home
→啟動 /home下user的磁碟限額。
 # quotaon –guva

6.檢視磁碟配額:quota, repquota (report quota)
# repquota –a  (= # repquota -ua)
→ /etc/mtab內有quota限額的使用者,檢視其quota限額。
 假設barry在 /home及 /var皆有設quota,則不能同時顯示,須使用:
# quota –u barry才可同時顯示 /home及 /var下的磁碟配額。
# repquota –ga
# repquota -gua
# repquota –u /home (repquota –g /var)
# repquota –uv /home
→ -uv表示檢視有quota限額的user,就算user尚未使用到磁碟空間也
   會顯示出來。
$ quota
→user檢視自己限額及使用情形。

補充:當我們設定群組quota限額時,使用者的gid (預設群組)需為此群組
   的id,所以要將使用者加入群組時,需用usermod –g,不能用
   usermod –G或gpasswd –a的方式。
   另外一點,若群組quota剛設定完成,群組中的使用者尚未儲存資
   料,則執行 # quota –g group時,會發現群組quota無法使用的訊息,
   當使用者開始儲存資料後就可正式啟用。
另外在執行quotacheck時,若執行過程不順利,可於此之前先:
   # touch aquota.user aquota.group
# ln –s aquota.user quota.user
# ln –s aquota.group quota.group
然後再執行quotacheck。

六. Find system files and place files in the correct location
1. find:依指定條件找尋檔案或目錄。(用ls –li長格式去想)
(1) -inum n (inode number)
# find /usr –inum 160159
→ 找出 /usr目錄下,inode number為160159者。
(2) -type f
# find /etc -type f
→ 找出 /etc目錄下,檔案類型為檔案者。其他較常用的類型有
  d目錄,b區塊裝置,c字元裝置。
(3) -perm <bits mode> (permission)
# find / -perm 1777
→ 找出根目錄下,權限為1777者。
(4) -uid n
# find / -uid 501
→ 找出檔案或目錄的擁有者的ID為501者。-gid同理。
(5) -user username
# find /home -user barry  ( group同理 )
→ 找出家目錄下的檔案或目錄,其擁有者為barry者。
(6) -size n
# find /etc –size 737535c ( character=byte )
→ /etc下,將大小為737535 bytes的檔案找出。
# find / -size +3k
→ 將大於3×1024 bytes的檔案找出。
1k = 1-1024 bytes
2k = 1025-2048 bytes 餘依此類推
+2k = 2048 bytes ( 不含 ) 以上的檔案大小
-2k = 1025 bytes ( 不含 ) 以下的檔案大小
# find /var –size -2b ( 預設1b = 512bytes )
→ 1b = 1-512 bytes
2b = 513-1024 bytes 餘依此類推
-2b = 513 bytes ( 不含 ) 以下的檔案大小
+2b = 1024 bytes ( 不含 ) 以上的檔案大小
(7) -name <檔案或目錄名稱> ( 可配合wildcard )
# find / -name “linuxconf” =>名稱為linuxconf者列出。
# find / -name “linuxconf*”
# find /var –type d –name “log”
# find /tmp –type f ∣xarges rm可寫成下式:
# rm `find /tmp –type f`
# find /home /tmp –name “barr*”
<note>find其後若無接目錄,預設為現在所處的目錄。

2. which:依PATH變數內的路徑依序尋找執行檔。
# echo $PATH
# which ls useradd ping echo

3. locate:使用資料庫檔案來尋找。( /var/lib/slocate/slocate.db←資料庫位置)
slocate:Security Enhanced version of the GNU Locate
# which locate slocate先找出路徑
# ls –l /usr/bin/locate /usr/bin/slocate
→ locate為一soft hard link,link至slocate。
# locate named =>似RE
→ 將檔案及目錄名稱中含有named字串者全列出。
# updatedb =>更新資料庫指令(預設排程每天執行),也可寫成下式:
# slocate -u
__________________
如果您覺得"文章小說討論區"所發的主題不錯
請不要吝嗇 在主題 " 點閱" 及 並給予 發文者一些鼓勵
---------------------------------------------
為了防止世界被破壞  為了保護世界的和平
貫徹下載與燒錄的邪惡  可愛又迷人的盜版角色
MP3....Program...  我們是穿梭在網際網路中的盜版大隊~~
拷貝 拷貝的明天正等著我們~~
就是這樣....喵~~@@
回覆時引用此文章
發表新主題 回覆

書簽

主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用
論壇跳轉


所有時間均為GMT -5。現在的時間是 11:25 PM


Powered by vBulletin® Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.