性能工具之15個常用的Linux文件系統(tǒng)命令
前言
檢查可用空間
計算目錄大小
清理文件
計算目錄中的文件數(shù)量
文件系統(tǒng)中查找大文件
6.列出文件系統(tǒng)中最大文件
計算指定文件大小
查找范圍內的大文件
列出最近修改的文件
查找舊文件(一)
查找舊文件(二)
查找空文件
打包及壓縮目錄內容
回收站中查找文件
查找重復文件
前言
檢查可用空間
計算目錄大小
清理文件
計算目錄中的文件數(shù)量
文件系統(tǒng)中查找大文件
6.列出文件系統(tǒng)中最大文件
計算指定文件大小
查找范圍內的大文件
列出最近修改的文件
查找舊文件(一)
查找舊文件(二)
查找空文件
打包及壓縮目錄內容
回收站中查找文件
查找重復文件
前言
測試人員最常見和繁瑣的任務之一就是清理系統(tǒng),比如防止磁盤空間出現(xiàn)不足。下面是我收集的一些常用的 Linux 文件系統(tǒng)相關命令。
檢查可用空間
要查找服務器上所有文件系統(tǒng)上的可用空間,請執(zhí)行以下命令:
$ df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點 /dev/vda1 40G 32G 6.0G 84% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 2.0M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 379M 0 379M 0% /run/user/1001 tmpfs 379M 0 379M 0% /run/user/1000
對于特定的目錄:
$ df -h /home 文件系統(tǒng) 容量 已用 可用 已用% 掛載點 /dev/vda1 40G 32G 6.0G 84% /
按占用順序顯示文件系統(tǒng),可以知道的更全面:
~$ df -h | awk '{print " " }' | sort -n | tail -5 22% / 23% /home 43% /var/datos 52% /usr 77% /boot
計算目錄大小
-h 參數(shù)以友好的可讀方式顯示目錄大小,以千字節(jié)、兆字節(jié)、千兆字節(jié)為單位
$ du -h -s /var/log 76M /var/log
清理文件
我們通常使用 rm 命令刪除文件以釋放空間。但是,我們無法刪除文件是非常常見的,因為應用程序當時正在使用該文件,這對于無法停止的壓測中系統(tǒng)上的日志文件最為常見。直接刪除它們會產生有害影響,例如掛起應用程序,或者更溫和但也不合適,因為這些文件的轉儲數(shù)據會被中斷并且不再有用。
為了不改變應用程序行為并實現(xiàn)釋放磁盤空間的目標,我們將清空文件而不是刪除它們:
~# >/var/log/syslog
而后文件將是0字節(jié)大小。
如果需要使用單命令一次清空多個文件:
~# for I in `ls "/var/log/*.log"`;do >"$I";done
計算目錄中的文件數(shù)量
$ ls -l /var/log | wc -l
文件系統(tǒng)中查找大文件
當你想清理空間的時候,此命令很有用,它會顯示目錄及子目錄中的最大文件
~# du -k /var/log | sort -n | tail -5 36904 /var/log/audit 45780 /var/log/sa 4120792 /var/log/journal/f0f31005fb5a436d88e3c6cbf54e25aa 4120800 /var/log/journal 4207856 /var/log
TIPS:
文件大小必須以千字節(jié)(參數(shù) -k)顯示,如果參數(shù)是 -h ,sort -n命令不會按列表排序
tail -x 限制顯示文件數(shù),x 是數(shù)字,如果目錄有數(shù)百或數(shù)千個文件,此參數(shù)就尤為重要了。
6.列出文件系統(tǒng)中最大文件
與上面類似,不過此命令不包括子目錄
[root@7dgroup3 log]# ls -lSr | tail -5 -rw------- 1 root root 468120 12月 16 03:20 messages-20181216 -rw------- 1 root root 470853 12月 2 03:24 messages-20181202 -rw------- 1 root root 470862 12月 9 03:43 messages-20181209 -rw------- 1 root root 476536 12月 23 03:20 messages-20181223 -rw------- 1 root root 500087 12月 30 00:20 messages
如果刪除 -r 參數(shù),列出的文件將是最小而不是最大文件。
計算指定文件大小
如果想獲取指定目錄中.log 文件的總大小:
~$ du -ch /var/log/*.log | grep total 20M total
查找范圍內的大文件
例如,文件大小超過 100MB
~$ find . -type f -size +100M -ls
或者在 100MB 到 1GB之間的那些文件
~$ find . -type f -size +100M -size -1G -ls
列出最近修改的文件
~# ls -larth /var/log | tail -5 -rw------- 1 root root 5.2K 12月 30 00:14 secure -rw-r--r-- 1 root root 0 12月 30 00:14 syslog drwxr-xr-x. 14 root root 4.0K 12月 30 00:14 . -rw------- 1 root root 118K 12月 30 00:30 cron -rw------- 1 root root 489K 12月 30 00:30 messages
參數(shù) -a 表示必須顯示隱藏文件
查找舊文件(一)
很多時候我們需要知道在給定時間間隔內修改的文件。在以下示例中,定位了超過90天的文件,以便找出不再使用的舊文件,可以安全地刪除這些文件以釋放空間。
?#find / var / log - mtime + 90 - ls
?#find / var / log - mtime + 90 - ls - exec rm {} \; 第一個命令僅定位文件,第二個命令還能刪除它們。
查找舊文件(二)
與上面相同,另外一種情況,還考慮在指定時間間隔內已訪問,修改或未修改的文件。
?#find / var / log - atime + 90 - ls
查找空文件
以下命令允許你查找當前目錄中大小為 0 字節(jié)的文件,即空文件。這在生成此文件的異常情況下非常有用,例如在文件系統(tǒng) 100% 已滿并且應用程序嘗試不成功地寫入磁盤或異常應用程序行為之后。在這些情況下,清理是必要的,因為盡管這些空文件不占用磁盤空間,但如果大量創(chuàng)建0字節(jié)文件,它們可以使用所有可用的文件系統(tǒng) inodes,這反過來導致不再創(chuàng)建文件。
~$ find . -type f -size 0b -ls
或者
~$ find . -type f -empty -ls
要了解文件系統(tǒng)中可用的可用 inode 數(shù),請使用 df -i 命令。
~# df -i 文件系統(tǒng) Inode 已用(I) 可用(I) 已用(I)% 掛載點 /dev/vda1 2621440 704450 1916990 27% / devtmpfs 482468 331 482137 1% /dev tmpfs 485118 1 485117 1% /dev/shm tmpfs 485118 1041 484077 1% /run tmpfs 485118 16 485102 1% /sys/fs/cgroup tmpfs 485118 1 485117 1% /run/user/1001
打包及壓縮目錄內容
有時將目錄中的所有日志文件打包到單個壓縮的 tar 文件中以保留給定時間點的該目錄的狀態(tài),然后安全地刪除或清空所有這些文件以釋放空間是有用的。
~# tar -zcvf var_log.`date +%Y%m%d`.tar.gz /var/log/*.log
上一個命令將所有日志文件壓縮為擴展名為.tar.gz 的單個文件和當天的日期,以便將來容易找到。讓我們看看如何節(jié)省空間,將此示例從 468 MB壓縮到 35 MB:
~# du -ch /var/log/*.log | grep total 468M total ~# ls -lh var_log.20181230.tar.gz -rw-r--r-- 1 root root 35M sep 30 13:36 var_log.20181230.tar.gz
之后,我們可以繼續(xù)清空所有日志文件,如第3節(jié)所述。
回收站中查找文件
通常當我們將文件發(fā)送到回收站時,它只是移動到主目錄中的隱藏文件夾。但是存在一些應用程序使用它們自己的目錄來存儲垃圾,其名稱是大寫或小寫的單詞 trash 的組合,并結合一系列數(shù)字,例如 .Trash001,.trash-002 , . Trash_0003 等
此外,當安裝來自外部硬盤驅動器或SD卡的文件系統(tǒng)時,回收站的名稱可能因操作系統(tǒng)而異,導致無法識別,因此盡管垃圾箱已清空,但設備繼續(xù)使用大量空間沒有明顯的理由。
因此,解決方案在于搜索系統(tǒng)中沒有大小寫差異的所有 * trash *子目錄,并分析其內容以查看是否可以刪除它(并不總是找到所有找到的項目都是垃圾)。
以下是必需的命令。它的執(zhí)行可能非常耗時,因此你可能想要輸入特定的文件系統(tǒng)或目錄:
?$ find / - iname “* trash *” - ls
查找重復文件
最后這是一個巨長的命令,允許你在目錄下查找和刪除重復文件,以避免不必要的冗余,這在消耗的磁盤空間方面可能非常昂貴。
~$ find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate | cut -f3-100 -d ' ' | tr '\n.' '\t.' | sed 's/\t\t/\n/g' | cut -f2-100 | tr '\t' '\n' | perl -i -pe 's/([ (){}-])/\\$1/g' | perl -i -pe 's/'\''/\\'\''/g' | xargs -pr rm -v
Linux 運維
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。