2021-05-12 14:32:11
Linux基礎教學學習筆記15——存取檔案系統
Linux基礎教學學習筆記15——存取檔案系統
1、檢視分割區和裝置檔案
/dev路徑下面儲存了系統的裝置檔案
檢視系統已經掛載分割區:
(1)
[root@linuxidc ~]# cat /proc/partitions
major minor #blocks name
2 0 4 fd0
8 0 20971520 sda
8 1 512000 sda1
8 2 20458496 sda2
11 0 3655680 sr0
253 0 18358272 dm-0
253 1 2097152 dm-1
(2)
[root@linuxidc ~]# df -hTP
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 18G 3.1G 15G 18% /
devtmpfs devtmpfs 485M 0 485M 0% /dev
tmpfs tmpfs 494M 80K 494M 1% /dev/shm
tmpfs tmpfs 494M 7.1M 487M 2% /run
tmpfs tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 119M 379M 24% /boot
檢視檔案系統的UUID,UUID標記的是檔案系統,而非分割區,使用UUID標記的好處是在分割區發生錯位的情況下,比如sda5,sda6,sda7:如果sda5被刪除了,則sda6變成sda6,sda7變成sda6,那麼在檔案/etc/fstab掛載中,如果還是寫sda6,sda7,則掛載會出現問題;所以最好再fstab裡面掛載時寫UUID
[root@linuxidc ~]# blkid
/dev/sda1: UUID="64d32c15-8708-44a2-893a-a437c0f43156" TYPE="xfs"
/dev/sda2: UUID="4Ice1U-52dB-jxhY-80pW-vWus-rv1n-MVBJQ5" TYPE="LVM2_member"
/dev/sr0: UUID="2014-05-07-03-58-46-00" LABEL="RHEL-7.0 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="6e18526c-e4fa-4854-adcd-d2e463a53bf9" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="b4476c9f-7681-48d8-8cba-3904f4ebce61" TYPE="swap"
2、掛載檔案系統
檢視資料夾大小,而不是內容:
[root@linuxidc ~]# ls -ld /boot/
dr-xr-xr-x. 3 root root 4096 Dec 26 15:33 /boot/
檢視資料夾內容的大小使用du命令:
[root@linuxidc ~]# du -h /boot/
0/boot/grub2/themes/system
0/boot/grub2/themes
2.4M/boot/grub2/i386-pc
3.3M/boot/grub2/locale
2.5M/boot/grub2/fonts
8.1M/boot/grub2
94M/boot/
[root@linuxidc ~]# du -hs /boot/
94M/boot/
使用mount命令掛載檔案系統:
常用選項:
-o: 選項1,選項2... 檔案系統 掛載點
ro:唯讀選項;
remount:重新掛載
[root@linuxidc ~]# mount /dev/cdrom /iso/
mount: /dev/sr0 is write-protected, mounting read-only
[root@linuxidc ~]# mount UUID="2014-05-07-03-58-46-00" /iso/
當掛載點掛載一個檔案系統的時候,那麼掛載點裡面原有的東西都會被隱藏;
解除安裝檔案系統:umount ;
解除安裝檔案系統的時候,如果檔案系統被某個進程佔用,則解除安裝會提示系統繁忙,無法解除安裝:
[root@linuxidc iso]# umount /iso/
umount: /iso: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
這時候使用fuser命令,檢視占用的進程,然後kill命令殺死,再解除安裝即可:
[root@linuxidc iso]# fuser -mv /iso/
USER PID ACCESS COMMAND
/iso: root kernel mount /iso
root 6256 ..c.. bash
[root@linuxidc ~]# kill -9 6256
輸入mount命令可以檢視所有的掛載選項:
3、開機自動掛載檔案系統
編輯/etc/fstab檔案,編輯開機自動掛載檔案系統:
9 /dev/mapper/rhel-root / xfs defaults 1 1
10 UUID=64d32c15-8708-44a2-893a-a437c0f43156 /boot xfs defaults 1 2
11 /dev/mapper/rhel-swap swap swap defaults 0 0
檔案系統 掛載點 檔案系統 掛載選項 dump fsck檢查(一般寫0)
設定完成fstab後,使用mount -a 命令掛載檔案系統;
4、檔案的軟硬連結
分割區的每個block預設大小是4K,一個block只能儲存一個檔案;inode相當於分割區的索引,記錄了檔案的屬性資訊;
硬連結,檔案的inode相同,實質上指的是相同的檔案,相當於一個檔案兩個名稱,修改其中的一個檔案,另一個也會改變,刪除其中一個檔案,不會影響另一個檔案:
1234 [root@linuxidc tmp]# touch aa
[root@linuxidc tmp]# ln aa bb
[root@linuxidc tmp]# ls -i aa bb
102819918 aa 102819918 bb
inode只能記錄本分割區的block資訊,硬連結不能跨分割區
建立一個資料夾,預設就會有2個硬連結,一個是資料夾本身,另一個是資料夾的".":, “..” 返回上一層目錄也是一個硬連結:
”[root@linuxidc tmp]# mkdir aa
[root@linuxidc tmp]# ls -ld aa/
drwxr-xr-x. 2 root root 6 Jan 14 16:32 aa/
5、檔案查詢
whereis + 檔案
which + 命令
locate:利用資料庫來根據名字查詢檔案,查詢速度很快,但是資料庫一週更新一次;可以使用updatedb命令手工更新資料庫:
find: find + 目錄+屬性+值
屬性值:
1、name;
2、size;
3、user group;
4、uid,gid;
5、perm;查詢許可權 222完全匹配,-222至ugo分別少要含有相對應的許可權222,+222,/222或關係,ugo分別只要滿足其中一個許可權即可
6、type;
7、ctime/cminu;
8、newer;
find查詢出來的內容要執行命令,則按照以下兩種方式操作:
[root@linuxidc tmp]# find -name "*" | xargs ls -l
[root@linuxidc tmp]# find -ctime +1 -exec ls -l {} ;
6、find命令引數詳解
SYNOPSIS語法格式
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
選項:
-P:不查詢連結檔案內容,這是預設選項;
-L:查詢連結檔案內容,如果檔案時連結檔案,那麼加入這個選項,命令將會檢視連結所指的檔案的內容:
例如,2個連結檔案,一個指向檔案,一個指向目錄:
[root@linuxidc tmp]# ll bb cc
lrwxrwxrwx. 1 root root 12 Jan 15 14:59 bb -> /root/passwd
lrwxrwxrwx. 1 root root 5 Jan 15 15:11 cc -> /root
不加-L選項時,查詢bb和cc檔案:
[root@linuxidc tmp]# find bb cc -type f 沒有結果
加入-L選項,將會查詢連結檔案指向的真正內容:
[root@linuxidc tmp]# find -L bb cc -type f
-H:這個選項和-L選項類似,不同的區別是,假如查詢的連結檔案是壞連結,則將會顯示連結檔案的資訊;
-follow:這個選項後面的連結檔案也會被指向其連結的真正檔案;
-D: 診斷資訊
診斷選項:
help Explain the debugging options
tree Show the expression tree in its original and optimised form.
stat Print messages as files are examined with the stat and lstat system calls. The find program tries to min?imise such calls.
opt Prints diagnostic information relating to the optimisation of the expression tree; see the -O option.
rates Prints a summary indicating how often each predicate succeeded or failed.
-Olevel;優化層級
0:
1:預設層級
2:
3:
表示式expression由三個部分組成,由運算子分隔開:
選項option,所有選項返回true值:
常用選項
-d,-depth:處理目錄的內容的層級
-maxdepth:處理目錄的最大層級;
-noleaf:針對於CD-ROM,MS-DOS,AFS等不符合unix檔案系統規範的檔案;
測試tests:
-ctime;
-atime:
-perm:
-iname:
-path
-mmin:
-mtime:
-newer:
-name
-size:檔案大小
-type:檔案型別:b,c,d,f,l,p,s,d
-uid:
-gid:
操作actions:
-delete:
-exec command: 執行多個命令,直到遇到帶;的命令
-exec comand {} ; :
-execdir command:
-execdir comand {} ; :只執行查詢的檔案的當前目錄
-fprint:
-prune:修剪,只顯示檔案所所指向的目錄:
find的運算子:
(expr):
!:非
not:
expr1 expr2:並且
expr1 -a expr:並且
expr1 -and expr2:並且
expr1 -o expr2:或者
expr1 -or expr2:或者
三種標準格式:POSIX,GNU,BSD
環境變數:
LANG:
LC_ALL:
PATH:
POSIXLY_CORRECT: 設定了這個環境變數,那麼 -perm +zzz這樣的模式會出錯
Determines the block size used by -ls and -fls. If POSIXLY_CORRECT is set, blocks are units of 512 bytes. Other‐
wise they are units of 1024 bytes.
When POSIXLY_CORRECT is not set, -perm +zzz is treated just like -perm /zzz if +zzz is not a valid symbolic mode.
When POSIXLY_CORRECT is set, such constructs are treated as an error.
常見使用例子:
找到檔名為core的檔案,並刪除:
find /tmp -name core -type f -print | xargs /bin/rm -f
如果檔案或目錄含有單引號、雙引號、換行符,以下的find也能找到:
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
找到當前目錄下面的檔案,並執行file命令:
find . -type f -exec file '{}' ;
或:find . -type f -exec file {} ;
遍歷跟目錄,查詢setuid的檔案和目錄並儲存到/root/suid.txt,查詢大於100M的檔案並儲存到/root/big.txt,%#m=檔案許可權前面加特殊標記位,%u =UID,%p=檔名稱,%s=檔案大小:
find / ( -perm -4000 -fprintf /root/suid.txt '%#m %u %pn' )
( -size +100M -fprintf /root/big.txt '%-10s %pn' )
查詢家目錄下面在最近24小時內修改的檔案:
find $HOME -mtime 0
尋找sbin目錄下面可執行但是不可讀的檔案,!是非的意思,使用跳脫字元進行跳脫:
find /sbin /usr/sbin -executable ! -readable -print
精確匹配:
find . -perm 664
find . -perm -664 至少包含644許可權
find . -perm /222 ugo的許可權位只要滿足一個條件即可
find . -perm /220
find . -perm /u+w,g+w
find . -perm /u=w,g=w
find . -perm -444 -perm /222 ! -perm /111
find . -perm -a+r -perm /a+w ! -perm /a+x
find repo/ -exec test -d {}/.svn ; -or
-exec test -d {}/.git ; -or -exec test -d {}/CVS ;
-print -prune
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-03/115075.htm
相關文章