RH124|第十五章 訪問 Linux 文件系統(tǒng)

識別文件系統(tǒng)和設備

目標

完成本節(jié)后菠隆,您能夠識別文件系統(tǒng)層次結構中的目錄以及將其存儲在哪個設備上朋魔。

儲存管理概念

Linux服務器上的文件通過文件系統(tǒng)層次結構(目錄的單個倒置樹)進行訪問久信。 該文件系統(tǒng)層次結構是由系統(tǒng)可用存儲設備提供的文件系統(tǒng)組裝而成的冷冗。 每個文件系統(tǒng)都是一個已格式化以存儲文件的存儲設備吱窝。

從某種意義上說若厚,Linux的文件系統(tǒng)層次結構展示了一個獨立的存儲設備上的文件系統(tǒng)集合拦英,就好像是一個巨大的存儲設備上的一組文件,你可以在一個巨大的存儲設備上瀏覽测秸。很多時候疤估,你不需要知道特定的文件在哪個存儲設備上,你只需要知道該文件所在的目錄霎冯。

但是铃拇,有時它可能很重要。 您可能需要確定存儲設備的容量以及文件系統(tǒng)層次結構中的哪些目錄受到影響沈撞。 存儲設備的日志中可能存在錯誤慷荔,并且您需要知道哪些文件系統(tǒng)受到威脅。 您可能只想在兩個文件之間創(chuàng)建硬鏈接缠俺,并且需要知道它們是否在同一文件系統(tǒng)上显晶,以確定是否可能。

但是壹士,有時候磷雇,這可能是很重要的。你可能需要確定一個存儲設備有多滿躏救,以及文件系統(tǒng)層次結構中的哪些目錄受到影響倦春。存儲設備的日志中可能會有錯誤,你需要知道哪些文件系統(tǒng)有風險。你可能只是想在兩個文件之間建立一個硬連接睁本,你需要知道它們是否在同一個文件系統(tǒng)中尿庐,以確定是否有可能。

文件系統(tǒng)和掛載點

要使文件系統(tǒng)的內容在文件系統(tǒng)層次結構中可用呢堰,必須將其掛載在一個空目錄上抄瑟。這個目錄被稱為掛載點。掛載后枉疼,如果使用ls來列出該目錄皮假,就會看到掛載的文件系統(tǒng)的內容,可以正常訪問和使用這些文件骂维。許多文件系統(tǒng)是在啟動過程中自動掛載的惹资。

如果你只使用過Microsoft Windows的驅動器字母,這是個本質上不同的概念航闺。它有點類似于NTFS掛載文件夾的功能褪测。

文件系統(tǒng)、存儲和塊設備

在Linux中潦刃,對存儲設備的低級訪問是由一種稱為塊設備的特殊類型的文件提供的侮措。這些塊設備必須用文件系統(tǒng)格式化,然后才能掛載乖杠。

塊設備文件和其他設備文件一起存儲在/dev目錄下分扎。設備文件是由操作系統(tǒng)自動創(chuàng)建的。在Red Hat Enterprise Linux中胧洒,檢測到的第一個SATA/PATA畏吓、SAS、SAS卫漫、SCSI或USB硬盤驅動器被稱為/dev/sda庵佣,第二個是/dev/sdb,以此類推汛兜。這些名稱代表了整個硬盤驅動器。

其他類型的存儲會有其他形式的命名通今。

塊設備命名

TYPE OF DEVICE DEVICE NAMING PATTERN
SATA/SAS/USB-attached storage /dev/sda, /dev/sdb ...
virtio-blk paravirtualized storage (some virtual machines) /dev/vda, /dev/vdb ...
NVMe-attached storage (many SSDs) /dev/nvme0, /dev/nvme1 ...
SD/MMC/eMMC storage (SD cards) /dev/mmcblk0, /dev/mmcblk1 ...

磁盤分區(qū)

通常情況下粥谬,你不會把整個存儲設備做成一個文件系統(tǒng),將存儲設備分為稱為分區(qū)的較小塊辫塌。

分區(qū)允許您對磁盤進行分區(qū):不同的分區(qū)可以被格式化為不同的文件系統(tǒng)或用于不同的目的漏策。例如,一個分區(qū)可以包含用戶主目錄臼氨,而另一個分區(qū)可以包含系統(tǒng)數(shù)據(jù)和日志掺喻。如果用戶用數(shù)據(jù)填滿了主目錄分區(qū),系統(tǒng)分區(qū)可能仍有可用空間。

分區(qū)本身就是塊設備感耙。在SATA連接的存儲上褂乍,第一個磁盤上的第一個分區(qū)是/dev/sda1。第二個磁盤上的第三個分區(qū)是/dev/sdb3即硼,依此類推逃片。半虛擬化存儲設備具有類似的命名系統(tǒng)。

連接NVMe的SSD設備以不同的方式命名其分區(qū)只酥。在這種情況下褥实,第一個磁盤上的第一個分區(qū)是/dev/nvme0p1。第二個磁盤上的第三個分區(qū)是/dev/nvme1p3裂允,依此類推损离。SD卡或MMC卡有類似的命名系統(tǒng)。

主機上的/ dev / sda1設備文件的一長串列出了其特殊的文件類型b绝编,表示塊設備:

[user@host ~]$ ls -l /dev/sda1
brw-rw----. 1 root disk 8, 1 Feb 22 08:00 /dev/sda1

邏輯卷

另一種組織磁盤和分區(qū)的方法是使用邏輯卷管理(LVM)僻澎。使用LVM,一個或多個塊設備可以聚合到稱為卷組的存儲池中瓮增。然后怎棱,卷組中的磁盤空間被分配到一個或多個邏輯卷,這些邏輯卷的功能相當于物理磁盤上的一個分區(qū)绷跑。

LVM系統(tǒng)在創(chuàng)建時為卷組和邏輯卷分配名稱拳恋。LVM會在/dev中創(chuàng)建一個與組名相匹配的目錄,然后在這個新目錄中創(chuàng)建一個與邏輯卷同名的符號鏈接砸捏。然后這個邏輯卷文件就可以被掛載谬运。例如,如果一個卷組被稱為myvg垦藏,而其中的邏輯卷被稱為mylv梆暖,那么邏輯卷設備文件的完整路徑名就是/dev/myvg/mylv

檢查文件系統(tǒng)

要了解本地和遠程文件系統(tǒng)設備的概況以及可用空間的數(shù)量掂骏,請運行 df 命令轰驳。當運行 df 命令沒有參數(shù)時,它會報告總的磁盤空間弟灼、已使用的磁盤空間级解、可用的磁盤空間,以及所有掛載的常規(guī)文件系統(tǒng)上使用的總磁盤空間的百分比田绑。它可以報告本地和遠程文件系統(tǒng)勤哗。下面的例子顯示了主機上的文件系統(tǒng)和掛載點。

[user@host ~]$ df 
Filesystem     1K-blocks    Used Available Use% Mounted on 
devtmpfs          912584       0    912584   0% /dev 
tmpfs             936516       0    936516   0% /dev/shm 
tmpfs             936516   16812    919704   2% /run
tmpfs             936516       0    936516   0% /sys/fs/cgroup 
/dev/vda3        8377344 1411332   6966012  17% /
/dev/vda1        1038336  169896    868440  17% /boot 
tmpfs             187300       0    187300   0% /run/user/1000

主機系統(tǒng)上的分區(qū)顯示兩個物理文件系統(tǒng)掩驱,分別掛載在//boot上芒划。這在虛擬機中很常見冬竟。tmpfs和devtmpfs設備是系統(tǒng)內存中的文件系統(tǒng)。所有寫入tmpfs或devtmpfs的文件都會在系統(tǒng)重啟后消失民逼。

為了提高輸出尺寸的可讀性泵殴,有兩個不同的可讀選項。-h-H缴挖。這兩個選項之間的區(qū)別在于 -h 以 KiB袋狞、MiB 或 GiB為單位,而 -H 選項則以SI單位報告:KB映屋、MB 或 GB苟鸯。硬盤制造商在宣傳其產品時通常使用SI單位。

顯示主機系統(tǒng)上的文件系統(tǒng)報告棚点,并將所有單位轉換為人類可讀格式:

[user@host ~]$ df -h 
Filesystem      Size  Used Avail Use% Mounted on 
devtmpfs        892M     0  892M   0% /dev 
tmpfs           915M     0  915M   0% /dev/shm 
tmpfs           915M   17M  899M   2% /run
tmpfs           915M     0  915M   0% /sys/fs/cgroup 
/dev/vda3       8.0G  1.4G  6.7G  17% /
/dev/vda1      1014M  166M  849M  17% /boot 
tmpfs           183M     0  183M   0% /run/user/1000

要了解某個目錄樹所使用的空間的更多詳細信息早处,請使用du命令。du命令有-h-H選項瘫析,可以將輸出轉換為人類可讀的格式砌梆。du命令可以遞歸顯示當前目錄樹中所有文件的大小。

顯示主機上的/usr/share目錄的磁盤使用情況報告:

[root@host ~]# du /usr/share
...output omitted...
176 /usr/share/smartmontools
184 /usr/share/nano
8 /usr/share/cmake/bash-completion
8 /usr/share/cmake
356676 /usr/share

以人類可讀格式顯示主機上的/usr/share目錄的磁盤使用情況報告:

[root@host ~]# du -h /var/log
...output omitted...
176K /usr/share/smartmontools
184K /usr/share/nano
8.0K /usr/share/cmake/bash-completion
8.0K /usr/share/cmake
369M /usr/share

掛載和卸載文件系統(tǒng)

目標

完成此部分后贬循,您能夠通過在文件系統(tǒng)層次結構中添加和刪除文件系統(tǒng)來訪問文件系統(tǒng)的內容咸包。

手動掛載文件系統(tǒng)

要訪問可移動存儲設備上的文件系統(tǒng),需要安裝該文件系統(tǒng)杖虾。mount命令允許根用戶手動掛載文件系統(tǒng)烂瘫。mount命令的第一個參數(shù)指定要裝入的文件系統(tǒng)。第二個參數(shù)指定了要在文件系統(tǒng)層次結構中使用的目錄作為掛載點奇适。

有兩種常用方法可以將磁盤分區(qū)上的文件系統(tǒng)指定給mount命令:

  • / dev中包含文件系統(tǒng)的設備文件名坟比。
  • 將UUID寫入文件系統(tǒng),是一個通用的唯一標識符嚷往。

掛載設備相對簡單葛账。您需要確定您要安裝的設備,確保安裝點的存在皮仁,并將設備安裝到安裝點上籍琳。

識別塊設備

熱插拔式存儲設備,無論是硬盤驅動器(HDD)還是服務器盒中的固態(tài)設備(SSD)贷祈,或者是USB存儲設備趋急,每次連接到系統(tǒng)時,都可能會被插入不同的端口付燥。

使用 lsblk 命令可以列出指定塊設備或所有可用設備的詳細信息。

[root@host ~]# lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT vda                       253:0    0   12G  0 disk ├─vda1                    253:1    0    1G  0 part /boot
├─vda2                    253:2    0    1G  0 part [SWAP]
└─vda3                    253:3    0   11G  0 part / 
vdb                       253:16   0   64G  0 disk 
└─vdb1                    253:17   0   64G  0 part

如果你知道你剛剛添加了一個64GB的存儲設備和一個分區(qū)愈犹,那么你可以從前面的輸出中猜到/dev/vdb1就是你要掛載的分區(qū)键科。

通過塊設備名稱掛載

下面的示例將文件系統(tǒng)/dev/vdb1分區(qū)掛載在目錄/mnt/ data上闻丑。

[root@host ~]# mount /dev/vdb1 /mnt/data

要掛載一個文件系統(tǒng),目標目錄必須已經(jīng)存在勋颖。默認情況下嗦嗡,/mnt目錄已經(jīng)存在,是作為臨時掛載點使用的饭玲。

你可以使用 /mnt 目錄侥祭,或者最好是創(chuàng)建一個 /mnt 的子目錄作為臨時掛載點,除非你有很好的理由將其掛載在文件系統(tǒng)層次結構中的特定位置茄厘。

這種方法在短期內效果不錯矮冬。但是,如果設備被添加到系統(tǒng)中或從系統(tǒng)中刪除次哈,操作系統(tǒng)檢測磁盤的順序就會改變胎署。這將改變與該存儲設備相關的設備名稱。更好的方法是通過文件系統(tǒng)中的一些特性來加載窑滞。

按文件系統(tǒng)UUID掛載

與文件系統(tǒng)相關聯(lián)的一個穩(wěn)定的標識符是其UUID琼牧,這是一個非常長的十六進制數(shù)字,作為一個通用的唯一標識符哀卫。這個UUID是文件系統(tǒng)的一部分巨坊,只要文件系統(tǒng)沒有被重新創(chuàng)建,這個UUID就會保持不變此改。

lsblk -fp 命令列出了設備的完整路徑趾撵、UUUID 和掛載點,以及分區(qū)中的文件系統(tǒng)類型带斑。如果文件系統(tǒng)沒有掛載鼓寺,掛載點將是空白。

[root@host ~]# lsblk -fp
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
/dev/vda                                                      
├─/dev/vda1 xfs          23ea8803-a396-494a-8e95-1538a53b821c /boot
├─/dev/vda2 swap         cdf61ded-534c-4bd6-b458-cab18b1a72ea [SWAP]
└─/dev/vda3 xfs          44330f15-2f9d-4745-ae2e-20844f22762d /
/dev/vdb
└─/dev/vdb1 xfs          46f543fd-78c9-4526-a857-244811be2d88

通過文件系統(tǒng)的UUID掛載文件系統(tǒng):

[root@host ~]# mount UUID="46f543fd-78c9-4526-a857-244811be2d88" /mnt/data

可移動存儲設備的自動掛載

如果你登錄并使用圖形化桌面環(huán)境勋磕,當插入任何可移動存儲介質時妈候,它將自動掛載任何可移動存儲介質。

可移動存儲設備被掛載在/run/media/USERNAME/LABEL挂滓,其中USERNAME是登錄到圖形環(huán)境的用戶名稱苦银,LABEL是一個標識符,通常是創(chuàng)建文件系統(tǒng)時給文件系統(tǒng)的名稱赶站,如果有的話幔虏,通常是給文件系統(tǒng)的名稱。

移除設備前贝椿,應先手動卸載設備想括。

卸載文件系統(tǒng)

關機和重啟程序會自動解除所有文件系統(tǒng)的掛載。作為這個過程的一部分烙博,任何緩存在內存中的文件系統(tǒng)數(shù)據(jù)都會被刷新到存儲設備上瑟蜈,從而確保文件系統(tǒng)不會發(fā)生數(shù)據(jù)損壞烟逊。

要解除文件系統(tǒng)的掛載,umount命令需要掛載點作為參數(shù)铺根。

[root@host ~]# umount /mnt/data

如果掛載的文件系統(tǒng)正在使用中宪躯,則無法解除掛載。為了使umount命令成功位迂,所有進程需要停止訪問掛載點下的數(shù)據(jù)访雪。

在下面的例子中,umount失敗的原因是文件系統(tǒng)正在使用中(shell使用的是/mnt/data作為當前的工作目錄)掂林,產生了一個錯誤消息臣缀。

[root@host ~]# cd /mnt/data 
[root@host data]# umount /mnt/data 
umount: /mnt/data: target is busy.

lsof命令會列出所有打開的文件以及在提供的目錄中訪問這些文件的進程。這對于識別當前阻止文件系統(tǒng)成功卸載的進程是非常有用的党饮。

[root@host data]# lsof /mnt/data 
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
bash    1593 root  cwd    DIR 253,17        6  128 /mnt/data 
lsof    2532 root  cwd    DIR 253,17       19  128 /mnt/data 
lsof    2533 root  cwd    DIR 253,17       19  128 /mnt/data

一旦確定了進程肝陪,就可以采取相應的行動,比如等待進程完成刑顺,或者向進程發(fā)送SIGTERM或SIGKILL信號氯窍。在這種情況下,只需將當前工作目錄改為掛載點以外的目錄即可蹲堂。

[root@host data]# cd
[root@host ~]# umount /mnt/data

在系統(tǒng)上定位文件

目標

完成這一部分后狼讨,你能夠使用findlocate定位來搜索掛載文件系統(tǒng)中的文件。

查找文件

系統(tǒng)管理員需要工具來搜索文件系統(tǒng)中符合特定條件的文件柒竞。本節(jié)將討論兩個可以搜索文件系統(tǒng)層次結構中的文件的命令政供。

  • locate命令可以在預生成的索引中搜索文件名或文件路徑,并立即返回結果朽基。
  • find命令通過遍歷文件系統(tǒng)層次結構來實時搜索文件布隔。

按名稱查找文件

locate命令根據(jù)文件的名稱或路徑來查找文件。它的速度很快稼虎,因為它可以從mlocate數(shù)據(jù)庫中查找這些信息衅檀。但是,這個數(shù)據(jù)庫不是實時更新的霎俩,必須經(jīng)常更新才能保證結果的準確性哀军。這也意味著locate 將無法找到上次數(shù)據(jù)庫更新后創(chuàng)建的文件。

locate數(shù)據(jù)庫每天都會自動更新打却。但是杉适,根用戶可以隨時發(fā)出updatedb命令來強制立即更新。

[root@host ~]# updatedb

locate命令限制了非權限用戶的搜索結果柳击。為了查看結果的文件名猿推,用戶必須擁有文件所在目錄的搜索權限。

在主機上的用戶可讀的目錄樹中搜索目錄名或路徑中帶有passwd的文件捌肴。

[user@host ~]$ locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/lppasswd
/usr/bin/passwd 
...output omitted...

即使文件名或路徑僅與搜索查詢部分匹配蹬叭,也將返回結果毯侦。

[root@host ~]# locate image
/etc/selinux/targeted/contexts/virtual_image_context
/usr/bin/grub2-mkimage
/usr/lib/sysimage
/usr/lib/dracut/dracut.conf.d/02-generic-image.conf
/usr/lib/firewalld/services/ovirt-imageio.xml
/usr/lib/grub/i386-pc/lnxboot.image 
...output omitted...

-i 選項執(zhí)行不區(qū)分大小寫的搜索。使用該選項具垫,所有可能的大寫和小寫字母的組合都可以匹配搜索。

[user@host ~]$ locate -i messages 
...output omitted...
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES/vim.mo
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES/vim.mo
/usr/share/vim/vim80/syntax/messages.vim
/usr/share/vim/vim80/syntax/msmessages.vim
/var/log/messages

選項 -n 限制了 locate 命令返回的搜索結果的數(shù)量试幽。下面的例子將locate命令返回的搜索結果限制在前五個匹配的結果筝蚕。

[user@host ~]$ locate -n 5 snow.png
/usr/share/icons/HighContrast/16x16/status/weather-snow.png
/usr/share/icons/HighContrast/22x22/status/weather-snow.png
/usr/share/icons/HighContrast/24x24/status/weather-snow.png
/usr/share/icons/HighContrast/256x256/status/weather-snow.png
/usr/share/icons/HighContrast/32x32/status/weather-snow.png

實時搜索文件

find命令通過在文件系統(tǒng)層次結構中進行實時搜索來定位文件。它比locate慢铺坞,但更準確起宽。它還可以根據(jù)文件名以外的標準來搜索文件,例如文件的權限济榨、文件類型坯沪、文件大小、修改時間等擒滑。

find命令使用執(zhí)行搜索的用戶帳戶來查看文件系統(tǒng)中的文件腐晾。調用查找命令的用戶必須具有讀取和執(zhí)行目錄的權限,才能檢查其內容丐一。

find命令的第一個參數(shù)是要搜索的目錄藻糖。如果省略了目錄參數(shù),find將在當前目錄中開始搜索库车,并在任何子目錄中尋找匹配的目錄巨柒。

要通過文件名搜索文件,請使用 -name FILENAME 選項柠衍。使用這個選項洋满,find會返回與FILENAME匹配的文件路徑。例如珍坊,要搜索從 / 目錄開始的名為 sshd_config 的文件牺勾,請運行以下命令。

[root@host ~]# find / -name sshd_config
/etc/ssh/sshd_config

通配符可用于搜索文件名垫蛆,并返回所有部分匹配的結果禽最。使用通配符時,一定要引用要查找的文件名袱饭,以防止終端解釋通配符川无。

在下面的例子中,搜索以/目錄中以.txt結尾的文件虑乖。

[root@host ~]# find / -name '*.txt'
/etc/pki/nssdb/pkcs11.txt
/etc/brltty/brl-lt-all.txt
/etc/brltty/brl-mb-all.txt
/etc/brltty/brl-md-all.txt
/etc/brltty/brl-mn-all.txt 
...output omitted...

要搜索/etc/目錄中包含單詞 "pass"的文件懦趋,請運行以下命令。

[root@host ~]# find /etc -name '*pass*'
/etc/security/opasswd
/etc/pam.d/passwd
/etc/pam.d/password-auth
/etc/passwd-
/etc/passwd
/etc/authselect/password-auth

要對指定的文件名進行大小寫敏感的搜索疹味,請使用 -iname 選項仅叫,后面是要搜索的文件名帜篇。要搜索主機上的/目錄中的文件名中的大小寫敏感文本 messages,請運行以下命令诫咱。

[root@host ~]# find / -iname '*messages*' 
...output omitted...
/usr/share/vim/vim80/lang/zh_CN.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_CN.cp936/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/syntax/messages.vim
/usr/share/vim/vim80/syntax/msmessages.vim

根據(jù)所有權或權限搜索文件

find命令可以根據(jù)文件的所有權或權限來搜索文件笙隙。按所有者搜索時,有用的選項是 -user-group坎缭,按名稱搜索竟痰,以及 -uid-gid,按 ID 搜索掏呼。

在主機上的/home/user目錄下搜索用戶擁有的文件坏快。

[user@host ~]$ find -user user
.
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

在主機上的/home/user目錄下搜索組用戶所擁有的文件。

[user@host ~]$ find -group user .
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

在主機上的/home/user目錄下搜索用戶ID 1000擁有的文件憎夷。

[user@host ~]$ find -uid 1000 .
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

在主機的/ home / user目錄中搜索組ID 1000擁有的文件莽鸿。

[user@host ~]$ find -gid 1000 .
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

當文件所有者和群組所有者不同時, -user-group 選項可以一起使用拾给,以搜索文件所有者和群組所有者不同的文件祥得。下面的例子列出了由用戶根目錄下的文件和群組郵件所屬的文件。

[root@host ~]# find / -user root -group mail
/var/spool/mail 
...output omitted...

-perm 選項用于查找具有特定權限的文件蒋得。權限可以用八進制值來描述啃沪,讀取、寫入和執(zhí)行的權限可以是4窄锅、21的組合创千。權限可以用/或-符號表示。

/為前綴的數(shù)字權限可以匹配至少有一個用戶入偷、組或其他權限集的文件追驴。一個權限為r--r--r--r--的文件不匹配/222,但一個權限為rw--r--r--的文件匹配疏之。權限前的-號意味著該位的三個實例都必須是開啟的殿雪,所以前面的例子都不匹配,但是像rw-rw-rw->這樣的文件會匹配锋爪。

用一個更復雜的例子丙曙,下面的命令可以匹配任何用戶有讀寫和執(zhí)行權限的文件,組內成員有讀寫權限其骄,其他成員有只讀權限亏镰。

[root@host ~]# find /home -perm 764

要匹配用戶至少有寫權限和執(zhí)行權限的文件,組內至少有寫權限拯爽,其他人至少有讀權限的文件索抓。

[root@host ~]# find /home -perm -324

要匹配用戶有讀取權限的文件,或者組至少有讀取權限,或者其他人至少有寫入權限的文件逼肯。

[root@host ~]# find /home -perm /442

當與/-一起使用時耸黑,值為0就像通配符一樣,因為它意味著至少沒有什么權限篮幢。

要匹配/home/user目錄中的任何文件大刊,而其他人至少在主機上有讀取權限,請運行:

[user@host ~]$ find -perm -004

/home/user目錄中找到所有在主機上有寫權限的文件三椿。

[user@host ~]$ find -perm -002

根據(jù)大小搜索文件

find 命令可以查找與 -size 選項指定的大小相匹配的文件奈揍,后面是一個數(shù)值和單位。使用下面的列表作為 -size 選項的單位赋续。

  • k,代表千字節(jié)
  • M另患,表示兆字節(jié)
  • G纽乱,代表千兆字節(jié)

下面的例子顯示了如何搜索大小為10兆字節(jié)的文件,四舍五入昆箕。

[user@host ~]$ find -size 10M

要搜索大小超過10GB的文件鸦列。

[user@host ~]$ find -size +10G

要列出所有大小小于10KB的文件。

[user@host ~]$ find -size -10k

根據(jù)修改時間搜索文件

-mmin選項鹏倘,后面的時間(以分鐘為單位)可以搜索所有在過去n分鐘前內容發(fā)生變化的文件薯嗤。文件的時間戳總是四舍五入。當使用范圍(+n-n)時纤泵,它也支持小數(shù)值骆姐。

要查找120分鐘前主機上所有文件內容發(fā)生變化的文件,請運行捏题。

[root@host ~]# find / -mmin 120

分鐘數(shù)前面的+修改器可以查找所有在/中被修改超過n分鐘的文件玻褪。在這個例子中,超過200分鐘前被修改的文件被列出公荧。

[root@host ~]# find / -mmin +200

修改器會改變搜索方式带射,將/目錄中所有被修改過的文件都在n分鐘以內。在這個例子中循狰,被修改過的文件在150分鐘內被列出窟社。

[root@host ~]# find / -mmin -150

根據(jù)文件類型搜索文件

find命令中的-type選項將搜索范圍限制在指定的文件類型。使用下面的列表傳遞所需的標志來限制搜索范圍绪钥。

  • f灿里,用于普通文件
  • d,用于目錄
  • l程腹,用于軟鏈接
  • b钠四,用于塊狀裝置

搜索主機上/etc目錄中的所有目錄。

[root@host ~]# find /etc -type d
/etc
/etc/tmpfiles.d
/etc/systemd
/etc/systemd/system
/etc/systemd/system/getty.target.wants 
...output omitted...

搜索主機上的所有軟鏈接。

[root@host ~]# find / -type l

生成主機上/dev目錄中所有塊設備的列表缀去。

[root@host ~]# find /dev -type b
/dev/vda1
/dev/vda

-links選項后面的數(shù)字可以查找所有具有一定的硬鏈接數(shù)的文件侣灶。這個數(shù)字前面可以用+修改器來查找硬鏈接數(shù)大于給定的硬鏈接數(shù)的文件。如果數(shù)字前面有-修飾符缕碎,搜索將被限制在所有硬鏈接數(shù)小于給定數(shù)字的文件褥影。

在主機上搜索所有一個以上硬鏈接的常規(guī)文件。

[root@host ~]# find / -type f -links +1

總結

存儲設備用一種特殊的文件類型來表示咏雌,稱為塊設備凡怎。

df命令報告所有掛載的常規(guī)文件系統(tǒng)的總磁盤空間、已使用的磁盤空間和可用的磁盤空間赊抖。

mount命令允許root用戶手動掛載文件系統(tǒng)统倒。

所有進程需要停止訪問掛載點,才能成功卸載設備氛雪。

使用圖形環(huán)境時房匆,可移動存儲設備被安裝在/run/media目錄下。

find 命令在本地文件系統(tǒng)中執(zhí)行實時搜索报亩,根據(jù)搜索條件查找文件浴鸿。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弦追,隨后出現(xiàn)的幾起案子岳链,更是在濱河造成了極大的恐慌,老刑警劉巖劲件,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掸哑,死亡現(xiàn)場離奇詭異,居然都是意外死亡零远,警方通過查閱死者的電腦和手機举户,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遍烦,“玉大人俭嘁,你說我怎么就攤上這事》恚” “怎么了供填?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罢猪。 經(jīng)常有香客問我近她,道長,這世上最難降的妖魔是什么膳帕? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任粘捎,我火速辦了婚禮薇缅,結果婚禮上,老公的妹妹穿的比我還像新娘攒磨。我一直安慰自己泳桦,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布娩缰。 她就那樣靜靜地躺著灸撰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拼坎。 梳的紋絲不亂的頭發(fā)上浮毯,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天泰鸡,我揣著相機與錄音,去河邊找鬼盛龄。 笑死饰迹,一個胖子當著我的面吹牛讯嫂,可吹牛的內容都是我干的。 我是一名探鬼主播渔彰,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼沐扳,長吁一口氣:“原來是場噩夢啊……” “哼氢哮!你這毒婦竟也來了?” 一聲冷哼從身側響起千扔,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎库正,沒想到半個月后曲楚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡褥符,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年龙誊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷楣。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡趟大,死狀恐怖,靈堂內的尸體忽然破棺而出铣焊,到底是詐尸還是另有隱情逊朽,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布曲伊,位于F島的核電站叽讳,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜岛蚤,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一邑狸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灭美,春花似錦推溃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犁苏,卻和暖如春硬萍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围详。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工朴乖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留助赞,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓畜普,卻偏偏與公主長得像吃挑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舶衬,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • Linux系統(tǒng)一般有4個主要部分:內核逛犹、shell圾浅、文件系統(tǒng)和應用程序。 內核狸捕、shell和文件系統(tǒng)一起形成了基本...
    請愛護小動物閱讀 2,551評論 0 22
  • Linux系統(tǒng)一般有4個主要部分: 內核众雷、shell做祝、文件系統(tǒng)和應用程序混槐。內核轩性、shell和文件系統(tǒng)一起形成了基本...
    偷風箏的人_閱讀 3,241評論 1 17
  • 第一章 1.Linux是一套免費使用和自由傳播的類UNIX操作系統(tǒng),它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,333評論 0 9
  • 1悯嗓、第八章 Samba服務器2脯厨、第八章 NFS服務器3坑质、第十章 Linux下DNS服務器配站點,域名解析概念命令:...
    哈熝少主閱讀 3,709評論 0 10
  • 萬物皆是文件 在unix里面這是一句很有名的話: 在linux系統(tǒng)的大多數(shù)資源都以文件形式存在稼跳,包括文件 目錄...
    deppyu閱讀 2,236評論 0 51