回想起來,從事linux運維工做已近5年之久了,平常工做中會用到不少常規命令,以前簡單羅列了一些命令:http://www.cnblogs.com/kevingrace/p/5985486.html
今天在這裏,詳細總結下運維工做中經常用到的一些操做命令(依據本人使用經驗而言):html
[Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/var']node
錯誤提示:沒有可用的臨時目錄 可能緣由:系統的inodes或磁盤空間佔滿了。清理下inodes空間便可,好比發現/var/spool/clientmqueue/目錄裏面有大量小文件,清理下一些無用文件。
文件系統結構和基本操做命令 mysql
chmod命令:改變權限linux
經常使用用法:chmod -R xxxx FILE 含義:設置文件或者目錄的權限屬性,加上R選項,表示遞歸設置目錄下文件和目錄的權限屬性 上面有4個x,每一個x的值爲0-7,若是少於4個,那麼默認在前面用0值補全,即「77」等價於「0077」。爲了簡單起見,咱們每次使用的時候,都指定4個x好了。 第一個"x":設置SUID(4),SGID(2),STICKY(1) 第二個"x":設置文件屬主的r權限(4),w寫權限(2),x執行權限(1) 第三個"x":設置文件所屬組的r權限(4),w寫權限(2),x執行權限(1) 第四個"x":設置其餘用戶的r權限(4),w寫權限(2),x執行權限(1) 備註: 設置了SUID,會把文件屬主的"rwx"中的x替換爲s[文件屬主具備x權限]或者S[文件屬主不具備x權限] 設置了SGID,會把文件所屬組的"rwx"中的x替換爲s[文件所屬組具備x權限]或者S[文件所屬組不具備x權限] 設置了STICKY,會把其餘用戶的"rwx"中的x替換爲t[其餘用戶具備x權限]或者T[其餘用戶不具備x權限] 另外有一個問題須要注意: 1)在清除通常文件的SUID,SGID,STICKY權限的時候,可使用"chmod 0xxx"的形式 2)在清除目錄的SUID,SGID權限的時候,不可使用"chmod 0xxx"的形式。在[1]中也提到了一個解決方案, 就是在原先的4個x的基礎上,再加一個或多個前置x,咱們取1位0好了,即"0xxxx"的形式。 綜上,咱們使用"0xxxx"(指定5位)來設置文件屬主,文件所屬組,其餘用戶的rwx權限和SUID,SGID,STICKY權限。
chown命令:改變屬主web
經常使用用法:chown [-R] OWNER FILE 含義:改變文件的全部者,加上R選項,表示遞歸 一般使用時會加上改變所屬組的部分,即"所屬者.所屬組" 或者 "所屬者:所屬組" chown [-R] OWNER.GROUP FILE chown [-R] OWNER:GROUP FILE
chgrp命令:改變屬組正則表達式
經常使用用法:chgrp [-R] GROUP FILE 含義:將FILE的用戶組改成GROUP,若是指定了-R選項,那麼遞歸改變
rm命令:刪除文件redis
經常使用用法:rm -rf FILE 含義:刪除文件 -r:若是FILE是目錄,那麼遞歸刪除目錄; -f:若是FILE是隻讀文件,再也不提醒,直接刪除
find命令:查找文件sql
1、經常使用用法 find path [-maxdepth N] test 2、含義與選項 2.一、含義 在指定路徑下,找到符合條件的文件和目錄。 2.二、選項表示的意思 "path":表示查找範圍的路徑。 "-maxdepth N":表示查找的最深深度爲N層。 "test":查找須要知足的條件。 3、經常使用的test 3.一、關於文件時間的幾個test test 說明 -amin n 以最後訪問文件block節點中數據的時間爲判斷依據,以多少個分鐘爲單位 -atime n 以最後訪問文件block節點中數據的時間爲判斷依據,以多少個24小時爲單位 -cmin n 以最後修改文件inode節點中元數據的時間爲判斷依據,以多少個分鐘爲單位 -ctime n 以最後修改文件inode節點中元數據的時間爲判斷依據,以多少個24小時爲單位 -mmin n 以最後修改文件block節點中數據的時間爲判斷依據,以多少個分鐘爲單位 -mtime n 以最後修改文件block節點中數據的時間爲判斷依據,以多少個24小時爲單位 須要注意:在以上6個選項中,數字"n"有3種形式,分別是:n,+n,-n 爲了更加透徹完整地理解,能夠概括獲得以下結論。 3.1.1)以"多少個分鐘"爲單位的選項 第一種狀況"n"爲"n" (FileTime-(NowTime-n*UNIT))>0 && (FileTime-(NowTime-n*UNIT))<=UNIT 第二種狀況"n"爲"+n" (FileTime-(NowTime-n*UNIT))<0 第三種狀況"n"爲"-n" (FileTime-(NowTime-n*UNIT))>0 "n"和"-n"的狀況具備必定的重複區域,即某個時刻"n"可以找到某個文件,"-n"也可以找到相同的文件。 3.1.2)以"多少個24小時"爲單位的選項 第一種狀況"n"爲"n" (FileTime-(NowTime-(n+1)*UNIT))>0 && (FileTime-(NowTime-(n+1)*UNIT))<=UNIT 第二種狀況"n"爲"+n" (FileTime-(NowTime-(n+1)*UNIT))<0 第三種狀況"n"爲"-n" (FileTime-(NowTime-n*UNIT))>0 注意:這裏沒有"n+1",避免了"n"和"-n"的狀況下的重複區域。 特別備註: 1)在上述描述中,系統當前時間(NowTime)和文件相應字段的時間(FileTime)都表示成以秒爲單位;在以"多少個分鐘"爲單位的選項中, UNIT=60(1分鐘有60秒),在以"多少個24小時"爲單位的選項中,UNIT=24*60*3600(24小時有24*60*3600秒) 2)加了"-daystart"選項後,NowTime就變爲當日午夜時間 3.1.3)舉一些例子來看 先假設系統當前時間是"2015-06-09 13:35:50"。 示例1 那麼find . -amin 10命令,查找的文件的"atime"範圍: 2015-06-09 13:25:51 -- 2015-06-09 13:26:50 示例2 那麼find . -amin -10命令,查找的文件的"atime"範圍: 2015-06-09 > 13:25:50[所以,"2015-06-09 13:26:30"就既能經過-amin 10獲得,也能經過-amin -10獲得] 示例3 那麼find . -amin +10命令,查找的文件的"atime"範圍: 2015-06-09 < 13:25:50 示例4 那麼find . -atime 5命令,查找的文件的"atime"範圍: 2015-06-03 13:35:51 -- 2015-06-04 13:35:50 示例5 那麼find . -atime -5命令,查找的文件的"atime"範圍: 2015-06-04 > 13:35:50 示例6 那麼find . -atime +5,查找的文件的"atime"範圍 2015-06-03 < 13:35:50 3.二、關於文件權限的test test 說明 -perm mode 目的文件的權限跟"mode"一致 -perm -mode 目的文件的權限包含了"mode" -perm /mode 目的文件的權限跟"mode"有交集 3.三、關於文件類型的test 關於文件類型的test爲"-type c",其中"c"表示文件類型特徵碼,對於文件類型特徵碼的介紹: b block (buffered) special c character (unbuffered) special d directory p named pipe (FIFO) f regular file l symbolic link; s socket D door (Solaris) 3.四、關於文件所屬用戶的test "-user uname":表示屬於"uname"這個用戶的文件,"uname"能夠是"用戶名稱",也能夠是"用戶ID,即uid"。 3.五、關於文件所屬用戶組的test "-group gname":表示屬於"gname"這個用戶組的文件,"gname"能夠是"用戶組名稱",也能夠是"用戶組ID,即gid"。 3.六、關於文件名稱的test "-name pattern":文件名符合"pattern"這個正則表達式的文件。 4、其餘 "find"命令的完整定義: find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] 可是在使用"find"命令的時候,通常不解析遇到的軟符號連接文件,若是解析的話很容易形成遞歸死循環,而咱們通常也不使用調試和優化選項, 所以"-H","-L","-P","-D","-O"這些選項通常不經常使用。 "expression"中包括了"options","tests","actions",以及它們之間的"operators"這四個部分。可是"options"通常也沒有什麼用,除了 "-maxdepth"這個"option"],"actions"也比較複雜,於是咱們能夠選擇先使用簡單的"find"命令,找出符合條件的文件,而後再經過管道或者 腳本的方式進行操做。 所以,最終"-H","-L","-P","-D","-O","expression"中的"options","actions","operators"都不須要。
ln命令:創建符號連接文件shell
經常使用用法:ln [-s] TARGET LINK_NAME 含義: 有-s選項,表示創建到TARGET的軟符號連接文件,軟符號連接文件的文件名爲LINK_NAME 沒有-s選項,表示創建到TARGET的硬符號連接文件,硬符號連接文件的文件名爲LINK_NAME 注意:當一個區分好比/分區空間快爆滿時,能夠將這個分區下的大文件先mv到別的大分區下(好比home區分),而後再將這個大文件從home分區軟連接回到/分區下
mount命令數據庫
格式:mount [-參數] [設備名稱] [掛載點] 其中經常使用的參數有: -a 安裝在/etc/fstab文件中類出的全部文件系統。 -f 假裝mount,做出檢查設備和目錄的樣子,但並不真正掛載文件系統。 -n 不把安裝記錄在/etc/mtab 文件中。 -r 講文件系統安裝爲只讀。 -v 詳細顯示安裝信息。 -w 將文件系統安裝爲可寫,爲命令默認狀況。 -t 指定設備的文件系統類型,常見的有: ext2 linux目前經常使用的文件系統 msdos MS-DOS的fat,就是fat16 vfat windows98經常使用的fat32 nfs 網絡文件系統 iso9660 CD-ROM光盤標準文件系統 ntfs windows NT/2000/XP的文件系統 auto 自動檢測文件系統 -o 指定掛載文件系統時的選項,有些也可寫到在/etc/fstab中。經常使用的有: defaults 使用全部選項的默認值(auto、nouser、rw、suid) auto/noauto 容許/不容許以 –a選項進行安裝 dev/nodev 對/不對文件系統上的特殊設備進行解釋 exec/noexec 容許/不容許執行二進制代碼 suid/nosuid 確認/不確認suid和sgid位 user /nouser 容許/不容許通常用戶掛載 codepage=XXX 代碼頁 iocharset=XXX 字符集 ro 以只讀方式掛載 rw 以讀寫方式掛載 remount 從新安裝已經安裝了的文件系統 loop 掛載迴旋設備 須要注意: 掛載點必須是一個已經存在的目錄,這個目錄能夠不爲空,但掛載後這個目錄下之前的內容將不可用,umount之後會恢復正常。 使用多個參數的時候,-o只用一次,參數之間用半角逗號隔開: [root@redis-new01 ~]# mount –o remount,rw / 例如要掛載windows下文件系統爲FAT32的D盤,通常而言在Linux下這個分區對應/dev/hda5,根據具體的分區狀況會有不一樣, 這裏就以hda5來舉例說明: [root@redis-new01 ~]# mkdir /mnt/hda5 //建立hda5的目錄做爲掛載點,位置和目錄名可自定義// [root@redis-new01 ~]# mount -t vfat /dev/hda5 /mnt/hda5 通常而言,Linux會自動探測分區的文件系統,除非讓你指定時,不然-t vfat 能夠省掉。 [root@redis-new01 ~]# mount /dev/hda5 /mnt/hda5 這樣就能夠進入/mnt/hda5目錄去訪問分區中的資源了。 =====爲何mount上分區後顯示不了中文文件爲問號/亂碼?===== 顯示問號代表你的系統中沒有可識別使用的中文字體,請先安裝中文字體。確保你的系統已經能夠很好的顯示中文。顯示爲亂碼通常是mount默認 使用的文件系統編碼和文件系統中文件的實際編碼不一致形成的。要想正常顯示中文文件,mount時須要用到 -o 參數裏的codepage和iocharset 選項。codepage指定文件系統的代碼頁,簡體中文中文代碼是936;iocharset指定字符集,簡體中文通常用cp936或gb2312。 [root@redis-new01 ~]# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5 通常來講 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就能夠解決問題了。 若是這樣作了之後還有問題,請嘗試UTF-8編碼: [root@redis-new01 ~]# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5 =====爲何mount上去之後分區普通用戶不可寫?===== mount時加上 –o umask=000 便可: [root@redis-new01 ~]# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5 =====爲何mount上去後的分區中的文件都變成短文件名了?===== 這是文件系統掛錯的緣由,將FAT32掛載成FAT16時就會出現這種狀況,先umount,而後用 –t vfat 從新掛載便可解決問題。 [root@redis-new01 ~]# mount –t vat /dev/hda5 /mnt/hda5 =====爲何不能mount ntfs分區?====== 這是內核不支持NTFS文件系統的緣由,請從新編譯內核或者安裝內核的NTFS文件系統支持包,以使得內核有NTFS文件系統的支持。 =====如何掛載U盤和mp3?===== 若是計算機沒有其它SCSI設備和usb外設的狀況下,插入的U盤的設備路徑是 /dev/sda1,用命令: [root@redis-new01 ~]# mkdir /mnt/u [root@redis-new01 ~]# mount /dev/sda1 /mnt/u 掛載便可。 =====能夠直接使用iso文件嗎?===== 能夠,就是mount的這一選項使得Linux下有免費虛擬光驅的說法,具體用法是: [root@redis-new01 ~]# mkdir /mnt/iso [root@redis-new01 ~]# mount –o loop linux.iso /mnt/iso 固然,掛載之後掛載點/mnt/iso也是隻讀的。 =====怎麼不能夠mount iso文件?===== 通常而言,大多數的發行版使用的內核均已將loop設備的支持編譯進去了,可是也有沒有的狀況,因此請確保系統所使用的內核支持loop設備。 第二種狀況是iso文件被放置到了NTFS或其它只讀文件系統中了。掛載loop 設備必需要求掛載到一個可寫的分區中,目前Linux內核對NTFS 文件系統的寫支持很是有限,請將iso文件複製到其它可寫文件系統中後再掛載。 =====如何掛載光驅和軟驅===== 通常來講CDROM的設備文件是/dev/hdc,軟驅的設備名是/dev/fd0 [root@redis-new01 ~]# mkdir /mnt/cdrom [root@redis-new01 ~]# mount /dev/hdc /mnt/cdrom //掛載光驅 // [root@redis-new01 ~]# mkdir /mnt/floppy [root@redis-new01 ~]# mount /dev/fd0 /mnt/floppy //掛載軟驅 // =====爲什麼掛載的CD-ROM不能顯示中文文件?===== 使用 –o iocharset=cp936 選項通常能解決問題,不然使用utf-8編碼。 [root@redis-new01 ~]# mount –o iocharset=cp936 /dev/hdc /mnt/cdrom =====如何開機自動掛載分區?===== 每次掛載都要輸入那麼長的命令的確是繁瑣了些,只要將分區信息寫到/etc/fstab文件中便可實現系統啓動的自動掛載,例如對於/dev/hda5的自動掛載添加以下的行便可: /dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0 ===== 如何掛載samba 分區?===== [root@redis-new01 ~]# mkdir /mnt/share [root@redis-new01 ~]# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312//192.168.1.100/share /mnt/share 若是中文顯示不正常請嘗試UTF-8編碼。固然能夠寫到fstab中實現自動掛載。 =====mount --bind是什麼意思?===== mount --bind 是將一個目錄中的內容掛載到另外一個目錄上,用法是 [root@redis-new01 ~]# mount --bind olddir newdir 該命令使得本身搭建的FTP要共享某個目錄的時候變得特別方便。若是要取消mount用命令: [root@redis-new01 ~]# mount --move olddir newdir 便可。 若是mount --bind 也想寫入fstab中的話格式以下: olddir newdir none bind 0 0 =====umount基本用法是?===== 譬如 /dev/hda5 已經掛載在/mnt/hda5上,用一下三條命令都可卸載掛載的文件系統 [root@redis-new01 ~]# umount /dev/hda5 [root@redis-new01 ~]# umount /mnt/hda5 [root@redis-new01 ~]# umount /dev/hda5 /mnt/hda5 =====爲何umount的時候老顯示 device busy?===== 這是由於有程序正在訪問這個設備,最簡單的辦法就是讓訪問該設備的程序退出之後再umount。 可能有時候用戶搞不清除到底是什麼程序在訪問設備,若是用戶不急着umount,則能夠用: [root@redis-new01 ~]# umount -l /mnt/hda5 來卸載設備。選項 –l 並非立刻umount,而是在該目錄空閒後再umount。 還能夠先用命令 ps aux 來查看佔用設備的程序PID,而後用命令kill來殺死佔用設備的進程,這樣就umount的很是放心了。 方法一: # fuser -m -v /nfs_old/ /nfs_old/: root 2699 ..c.. bash root 2999 ..c.. su 如上所示,有兩個進程佔用了,將其kill掉,再從新取消掛載。 # kill -9 2699 2999 # umount /nfs_old/ 方法二: # umount -l /nfs_old/ 方法三: # fuser -km /nfs_old/ =========================案例說明========================= 在作項目時,客戶須要FTP同時訪問兩個目錄,即實現一個ftp帳號同時訪問兩個目錄。要清楚,在建FTP時,都是一個用戶對應一個目錄, 當FTP用戶登陸後,就只訪問當前目錄。但若是須要訪問到其餘目錄,這個該如何解決呢? 剛開始覺得使用連接能夠實現這個功能,可是發現連接成功了,可是使用ftp是不能夠訪問的,不成功。 最終解決方法:使用mount的方法,把目錄掛到,原來的目錄中。 例如: 用戶test要同時訪問到目錄/data一、/data2 在test用戶家目錄下新建兩個目錄test一、test2 然把把/data一、/data2掛到對應的test一、test2 [root@huanqiu ~][root@redis-new01 ~]# mkdir /home/test/{test1,test2} [root@huanqiu ~][root@redis-new01 ~]# mount --bind /data1 /home/test/test1 [root@huanqiu ~][root@redis-new01 ~]# mount --bind /data2 /home/test/test2 這樣就可使用test帳號登錄ftp後,同時訪問到/data一、/data2目錄了。
mkdir命令:創建目錄
經常使用用法: 含義:建立目錄; 若是是建立層次目錄結構(即建立連級目錄),就加上-p參數。 例如: mkdir test1 test2 ... mkdir -p test/test1/test2/test3 mkdir test/test{1,2,3,4,5}
tar命令:打包
解壓 語法:tar [主選項+輔選項] 文件或者目錄 使用該命令時,主選項是必需要有的,它告訴tar要作什麼事情,輔選項是輔助使用的,能夠選用。 主選項: c 建立新的檔案文件。若是用戶想備份一個目錄或是一些文件,就要選擇這個選項。至關於打包。 x 從檔案文件中釋放文件。至關於拆包。 t 列出檔案文件的內容,查看已經備份了哪些文件。 特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!由於不可能同時壓縮與解壓縮。 輔助選項: -z :是否同時具備 gzip 的屬性?亦便是否須要用 gzip 壓縮或解壓? 通常格式爲xx.tar.gz或xx. tgz -j :是否同時具備 bzip2 的屬性?亦便是否須要用 bzip2 壓縮或解壓?通常格式爲xx.tar.bz2 -v :壓縮的過程當中顯示文件!這個經常使用 -f :使用檔名,請留意,在 f 以後要當即接檔名喔!不要再加其餘參數! -p :使用原文件的原來屬性(屬性不會依據使用者而變) --exclude FILE:在壓縮的過程當中,不要將 FILE 打包! --remove-files:打包後將源文件刪除 經常使用的結構: tar tar.gz tar.bz2 好比將文件file1打包上上面三種格式,分別是: tar -vcf file.tar file #將文件file打包成tar格式,打包參數-c tar -vxf file.tar -C /mnt #將file.tar包解壓到目標目錄/mnt上,解包參數-x,-C是解壓到哪一個目標目錄下 tar -zvcf file.tar.gz file tar -zvxf file.tar.gz -C /mnt tar -jvcf file.tar.bz2 file tar -jvxf file.tar.bz2 -C /mnt 示例一: [root@localhost ~]# ll /mnt/kevin.txt -rw-r--r--. 1 root root 0 Jun 8 03:03 /mnt/kevin.txt [root@localhost ~]# tar -zvcf /opt/kevin-`date +%Y%m%d`.tar.gz /mnt/kevin.txt --remove-files tar: Removing leading `/' from member names /mnt/kevin.txt [root@localhost ~]# ll /opt/ -rw-r--r--. 1 root root 118 Jun 8 03:03 kevin-20180608.tar.gz [root@localhost ~]# ll /mnt/kevin.txt ls: cannot access /mnt/kevin.txt: No such file or directory 示例二:將整個 /etc 目錄下的文件所有打包成爲 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮! [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮 特別注意: 在參數 f 以後的文件檔名是本身取的,咱們習慣上都用 .tar 來做爲辨識。 若是加 z 參數,則以 .tar.gz 或 .tgz 來表明 gzip 壓縮過的 tar file ~ 若是加 j 參數,則以 .tar.bz2 來做爲附檔名啊~ 上述指令在執行的時候,會顯示一個警告訊息: tar: Removing leading `/" from member names 這是關於絕對路徑的特殊設定。 示例三:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz 由於咱們使用 gzip 壓縮,因此要查閱該 tar file 內的文件時, 就得要加上 z 這個參數了!這很重要的! 示例四:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz 在預設的狀況下,咱們能夠將壓縮檔在任何地方解開的!以這個示例來講 我先將工做目錄變換到 /usr/local/src 底下,而且解開 /tmp/etc.tar.gz 則解開的目錄會在 /usr/local/src/etc ,另外,若是您進入 /usr/local/src/etc 則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不一樣喔! 示例五:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已 [root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd 我能夠透過 tar -ztvf 來查閱 tarfile 內的文件名稱,若是單隻要一個文件, 就能夠透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了! 示例六:我要備份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 另外:tar命令的C參數 [root@linux ~]# tar -cvf file2.tar /home/usr2/file2 tar: Removing leading '/' from members names home/usr2/file2 該命令能夠將/home/usr2/file2文件打包到當前目錄下的file2.tar中, 須要注意的是:使用絕對路徑標識的源文件,在用tar命令壓縮後,文件名連同絕對路徑(這裏是home/usr2/,根目錄'/'被自動去掉了)一併被壓縮進來。使用tar命令解壓縮後會出現如下狀況: [root@linux ~]# tar -xvf file2.tar [root@linux ~]# ls …… …… home …… …… 解壓縮後的文件名不是想象中的file2,而是home/usr2/file2。 [root@linux ~]# tar -cvf file2.tar -C /home/usr2 file2 該命令中的-C dir參數,將tar的工做目錄從當前目錄改成/home/usr2,將file2文件(不帶絕對路徑)壓縮到file2.tar中。 注意:-C dir參數的做用在於改變工做目錄,其有效期爲該命令中下一次-C dir參數以前。 使用tar的-C dir參數,一樣能夠作到在當前目錄/home/usr1下將文件解壓縮到其餘目錄, 例如: [root@linux ~]# tar -xvf file2.tar -C /home/usr2 而tar不用-C dir參數時是沒法作到的: [root@linux ~]# tar -xvf file2.tar /home/usr2 tar: /tmp/file: Not found in archive tar: Error exit delayed from previous errors
unrar命令:解壓RAR文件
1、經常使用用法 unrar x "rar文件名" 2、含義與選項 2.一、含義 解壓rar文件到當前目錄,並保存原壓縮文件目錄結構。 2.二、選項 「x」:解壓時保存原壓縮文件目錄結構 示例: 查看rar包中的內容: [root@redis-new01 ~]# unrar l *.rar 或者 [root@redis-new01 ~]# unrar v *.rar 測試rar包是否能解壓成功: [root@redis-new01 ~]# unrar t *.rar 解壓到當前文件夾: [root@redis-new01 ~]# unrar e *.rar 解壓到指定文件夾: [root@redis-new01 ~]# unrar x *.rar /tmp =========================================================== zip命令用來壓縮文件。gzip是個使用普遍的壓縮程序,文件經它壓縮事後,其名稱後面會多處「.gz」擴展名。 1)用法: gzip [選項參數][-s <壓縮字尾字符串>] [文件...] 或 gzip [選項參數][-s <壓縮字尾字符串>] [目錄] 2)功能: gzip是個使用普遍的解壓縮程序,它用於解開被gzip壓縮過的文件,這些壓縮文件預設最後的擴展名爲".gz"。 事實上gzip就是gzip的硬鏈接,所以不管是壓縮或解壓縮,均可經過gzip指令單獨完成。 3)選項參數: -d --decompress --uncompress 解開壓縮文件; -v --verbose 顯示指令執行過程; -l --list 列出壓縮文件的相關信息; -r --recursive 遞歸處理,將指定目錄下的全部文件及子目錄一併處理; -A --catenate: 新增文件到已存在的備份文件; -B 設置區塊大小 -c 把解壓後的文件輸出到標準輸出設備 示例一 [root@redis-new01 ~]# gzip * [root@redis-new01 ~]# ll 總用量 12 -r-xr-xr-x. 1 sunjimeng root 411 5月 9 07:59 head_text.gz -r-xr-xr-x. 1 root sunjimeng 67 5月 9 08:15 less1.gz -r-xr-xr-x. 1 root sunjimeng 80 5月 9 08:16 less2.gz 示例二 [root@redis-new01 ~]# gzip -d * //解壓當前目錄的全部文件 [root@redis-new01 ~]# gzip * //解壓並不能像壓縮時那樣什麼參數都不帶,須要帶解壓命令-d gzip: head_text.gz already has .gz suffix -- unchanged gzip: less1.gz already has .gz suffix -- unchanged gzip: less2.gz already has .gz suffix -- unchanged [root@redis-new01 ~]# gzip -d * [root@redis-new01 ~]# ll 總用量 12 -r-xr-xr-x. 1 sunjimeng root 664 5月 9 07:59 head_text -r-xr-xr-x. 1 root sunjimeng 45 5月 9 08:15 less1 -r-xr-xr-x. 1 root sunjimeng 57 5月 9 08:16 less2 示例三 [root@redis-new01 ~]# gzip -v * head_text: 42.3% -- replaced with head_text.gz less1: 4.4% -- replaced with less1.gz less2: 1.8% -- replaced with less2.gz [root@redis-new01 ~]# gzip -dv * head_text.gz: 42.3% -- replaced with head_text less1.gz: 4.4% -- replaced with less1 less2.gz: 1.8% -- replaced with less2 示例四 [root@redis-new01 ~]# gzip -l * [root@redis-new01 ~]# gzip -l * compressed uncompressed ratio uncompressed_name 411 664 42.3% head_text 67 45 4.4% less1 80 57 1.8% less2 558 766 30.3% (totals) [root@redis-new01 ~]# ll 總用量 12 -r-xr-xr-x. 1 sunjimeng root 411 5月 9 07:59 head_text.gz -r-xr-xr-x. 1 root sunjimeng 67 5月 9 08:15 less1.gz -r-xr-xr-x. 1 root sunjimeng 80 5月 9 08:16 less2.gz 示例五 [root@redis-new01 ~]# tar -cvf Dir.tar Dir Dir/ Dir/head_text.gz Dir/less1.gz Dir/less2.gz [root@redis-new01 ~]# ll 總用量 12 dr-xr-xr-x. 2 root sunjimeng 55 5月 24 07:28 Dir -rw-r--r--. 1 root root 10240 5月 24 07:34 Dir.tar [root@redis-new01 ~]# gzip -v Dir.tar Dir.tar: 92.1% -- replaced with Dir.tar.gz [root@redis-new01 ~]# gzip -l Dir.tar.gz compressed uncompressed ratio uncompressed_name 833 10240 92.1% Dir.tar 示例六 [root@redis-new01 ~]# tar cvf Dir1.tar -R Dir 塊 0:Dir/ 塊 1:Dir/head_text.gz 塊 3:Dir/less1.gz 塊 5:Dir/less2.gz [root@redis-new01 ~]# tar -cvf Dir2.tar Dir Dir/ Dir/head_text.gz Dir/less1.gz Dir/less2.gz [root@redis-new01 ~]# tar -cvf Dir3.tar -R Dir 塊 0:Dir/ 塊 1:Dir/head_text.gz 塊 3:Dir/less1.gz 塊 5:Dir/less2.gz 示例七 [root@redis-new01 ~]# gzip -vr findDir //遞歸的壓縮子文件夾下的文件 gzip: findDir/Dir/head_text.gz already has .gz suffix -- unchanged gzip: findDir/Dir/less1.gz already has .gz suffix -- unchanged gzip: findDir/Dir/less2.gz already has .gz suffix -- unchanged gzip: findDir/Dir.tar.gz already has .gz suffix -- unchanged findDir/Dir1.tar: 92.1% -- replaced with findDir/Dir1.tar.gz findDir/Dir2.tar: 92.1% -- replaced with findDir/Dir2.tar.gz findDir/Dir3.tar: 92.1% -- replaced with findDir/Dir3.tar.gz [root@redis-new01 ~]# ls -l findDir 總用量 16 -rw-r--r--. 1 root root 833 5月 24 07:34 Dir.tar.gz -rw-r--r--. 1 root root 834 5月 24 07:43 Dir3.tar.gz -rw-r--r--. 1 root root 834 5月 24 07:39 Dir2.tar.gz -rw-r--r--. 1 root root 834 5月 24 07:39 Dir1.tar.gz dr-xr-xr-x. 2 root sunjimeng 55 5月 24 07:28 Dir [root@redis-new01 ~]# ls -l findDir/Dir 總用量 12 -r-xr-xr-x. 1 root sunjimeng 80 5月 9 08:16 less2.gz -r-xr-xr-x. 1 root sunjimeng 67 5月 9 08:15 less1.gz -r-xr-xr-x. 1 sunjimeng root 411 5月 9 07:59 head_text.gz 示例八 [root@redis-new01 ~]# gzip -rdv Dir //遞歸的解壓目錄下的全部.gz的文件 [root@redis-new01 ~]# ls -l Dir 總用量 12 -r-xr-xr-x. 1 sunjimeng root 411 5月 9 07:59 head_text.gz -r-xr-xr-x. 1 root sunjimeng 67 5月 9 08:15 less1.gz -r-xr-xr-x. 1 root sunjimeng 80 5月 9 08:16 less2.gz [root@redis-new01 ~]# gzip -rdv Dir Dir/head_text.gz: 42.3% -- replaced with Dir/head_text Dir/less1.gz: 4.4% -- replaced with Dir/less1 Dir/less2.gz: 1.8% -- replaced with Dir/less2 [root@redis-new01 ~]# ls -l Dir 總用量 12 -r-xr-xr-x. 1 sunjimeng root 664 5月 9 07:59 head_text -r-xr-xr-x. 1 root sunjimeng 45 5月 9 08:15 less1 -r-xr-xr-x. 1 root sunjimeng 57 5月 9 08:16 less2 [root@redis-new01 ~]# gzip -r Dir [root@redis-new01 ~]# ls -l Dir 總用量 12 -r-xr-xr-x. 1 sunjimeng root 411 5月 9 07:59 head_text.gz -r-xr-xr-x. 1 root sunjimeng 67 5月 9 08:15 less1.gz -r-xr-xr-x. 1 root sunjimeng 80 5月 9 08:16 less2.gz [root@redis-new01 ~]# gzip -dv Dir gzip: Dir is a directory -- ignored
zip/unzip
命令名:zip 功能說明:壓縮文件。 語 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工 做目錄>][-ll][-n <字 尾字符串>][-t <日 期時間>][-<壓 縮效率>][壓 縮文件][文件...][-i <範本樣式>][-x <範本樣式>] 補充說明:zip是個使用普遍的壓縮程序,文件經它壓縮後會另外產生具 有".zip"擴展名 的壓縮文件。 參 數: -A 調 整可執行的自動解壓縮文件。 -b<工做目錄> 指 定暫時存放文件的目錄。 -c 替 每一個被壓縮的文件加上註釋。 -d 從 壓縮文件內刪除指定的文件。 -D 壓 縮文件內不創建目錄名稱。 -f 此 參數的效果和指定"-u"參 數相似,但不只更新既有文件,若是某些文件本來不存在於壓縮文件內,使用本參數會一併將其加入壓縮文件中。 -F 嘗 試修復已損壞的壓縮文件。 -g 將 文件壓縮後附加在既有的壓縮文件以後,而非另行創建新的壓縮文件。 -h 在 線幫助。 -i<範本樣式> 只 壓縮符合條件的文件。 -j 只 保存文件名稱及其內容,而不存聽任何目錄名稱。 -J 刪 除壓縮文件前面沒必要要的數據。 -k 使 用MS-DOS兼容格 式的文件名稱。 -l 壓 縮文件時,把LF字符 置換成LF+CR字 符。 -ll 壓 縮文件時,把LF+CR字 符置換成LF字符。 -L 顯 示版權信息。 -m 將 文件壓縮並加入壓縮文件後,刪除原始文件,即把文件移到壓縮文件中。 -n<字尾字符串> 不 壓縮具備特定字尾字符串的文件。 -o 以 壓縮文件內擁有最新更改時間的文件爲準,將壓縮文件的更改時間設成和該文件相同。 -q 不顯 示指令執行過程。 -r 遞 歸處理,將指定目錄下的全部文件和子目錄一併處理。 -S 包 含系統和隱藏文件。 -t<日期時間> 把 壓縮文件的日期設成指定的日期。 -T 檢 查備份文件內的每一個文件是否正確無誤。 -u 更 換較新的文件到壓縮文件內。 -v 顯 示指令執行過程或顯示版本信息。 -V 保 存VMS操做系統的文 件屬性。 -w 在 文件名稱裏假如版本編號,本參數僅在VMS操 做系統下有效。 -x<範本樣式> 壓 縮時排除符合條件的文件。 -X 不 保存額外的文件屬性。 -y 直 接保存符號鏈接,而非該鏈接所指向的文件,本參數僅在UNIX之 類的系統下有效。 -z 替 壓縮文件加上註釋。 -$ 保 存第一個被壓縮文件所在磁盤的卷冊名稱。 -<壓縮效率> 壓 縮效率是一個介於1-9的 數值。 示例1: 壓縮test.MYI [root@mysql test]# zip test1.zip test.MYI adding: test.MYI (deflated 42%) [root@mysql test]#ll -rw-r--r-- 1 root root 1033755 09-24 10:03 test1.zip 壓縮率爲8的 [root@mysql test]# zip test2.zip -8 test.MYI adding: test.MYI (deflated 42%) [root@mysql test]#ll -rw-r--r-- 1 root root 1033451 09-24 10:03 test2.zip 示例2: 將當前目錄下的全部文件和文件夾所有壓縮成test.zip文件,-r表示遞歸壓縮子目錄下全部文件 [root@mysql test]# zip -r test.zip ./* 打包目錄 [root@mysql test]# zip test2.zip test2/* 示例3: 刪除壓縮文件test1.zip中test.MYI文件 [root@mysql test]# zip -d test1.zip test.MYI 刪除打包文件目錄下的文件 [root@mysql test]# zip -d test2.zip test2/ln.log deleting: tests/ln.log 示例4: 向壓縮文件中test1.zip中添加test. MYI文件 [root@mysql test]# zip -m test1.zip test. MYI 示例5: 壓縮文件時排除某個文件 [root@mysql test]# zip test3.zip tests/* -x tests/ln.log ===================================================== 命令名: unzip 功 能說明:解壓縮zip文 件 語 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密 碼>][.zip文 件][文件][-d <目錄>][-x <文件>] 或 unzip [-Z] 補充說明:unzip爲.zip壓縮文件的解壓縮程序。 參 數: -c 將 解壓縮的結果顯示到屏幕上,並對字符作適當的轉換。 -f 更 新現有的文件。 -l 顯 示壓縮文件內所包含的文件。 -p 與-c參數相似,會將解壓縮的結果顯示到屏幕上,但不會執行任 何的轉換。 -t 檢 查壓縮文件是否正確。,但不解壓。 -u 與-f參數相似,可是除了更新現有的文件外,也會將壓縮文件中 的其餘文件解壓縮到目錄中。 -v 執 行是時顯示詳細的信息。或查看壓縮文件目錄,但不解壓。 -z 僅 顯示壓縮文件的備註文字。 -a 對 文本文件進行必要的字符轉換。 -b 不 要對文本文件進行字符轉換。 -C 壓 縮文件中的文件名稱區分大小寫。 -j 不 處理壓縮文件中原有的目錄路徑。 -L 將 壓縮文件中的所有文件名改成小寫。 -M 將 輸出結果送到more程 序處理。 -n 解 壓縮時不要覆蓋原有的文件。 -o 不 必先詢問用戶,unzip執 行後覆蓋原有文件。 -P<密碼> 使 用zip的密碼選項。 -q 執 行時不顯示任何信息。 -s 將 文件名中的空白字符轉換爲底線字符。 -V 保 留VMS的文件版本信 息。 -X 解 壓縮時同時回存文件原來的UID/GID。 [.zip文件] 指定.zip壓縮文件。 [文件] 指定 要處理.zip壓縮文 件中的哪些文件。 -d<目錄> 指 定文件解壓縮後所要存儲的目錄。 -x<文件> 指 定不要處理.zip壓 縮文件中的哪些文件。 -Z unzip -Z等 於執行zipinfo指 令。 示例1:將壓縮文件text.zip在當前目錄下解壓縮。 [root@mysql test]# unzip test.zip 示例2:將壓縮文件text.zip在指定目錄/tmp下解壓縮,若是已有相同的文件存在,要求unzip命令不覆蓋原先的文件。 [root@mysql test]# unzip -n test.zip -d /tmp 示例3:查看壓縮文件目錄,但不解壓。 [root@mysql test]# unzip -v test.zip 示例4:將壓縮文件test.zip在指定目錄tmp下解壓縮,若是已有相同的文件存在,要求unzip命令覆蓋原先的文件。 [root@mysql test]# unzip -o test.zip -d tmp/
pwd命令:打印當前目錄
經常使用用法:pwd [-P] 含義: 打印當前目錄 不含"-P"選項,表示打印當前目錄,若是目錄路徑中包含連接文件,不進行解析 含有"-P"選項,表示打印當前目錄,若是目錄路徑中包含連接文件,則進行解析 #echo $PWD 打印當前所在路徑
umask命令:文件默認權限
經常使用用法:umask [mask] 含義: 一、沒有"mask"參數,表示打印當前的mask設置值 二、有"mask"參數,表示設置當前的mask值爲"mask" 三、mask值的用途 mask值表示建立文件時默認須要減去的權限 建立通常文件時,默認的權限是"0666-mask",即0666減去umask碼值 建立目錄時,默認的權限是"0777-mask",即0777減去umask碼值 注意,以上的相減操做不能經過數字形式直接相減,這會產生錯誤,須要經過對應的rwx形式進行操做 好比"0666-0003" 數字直接相減結果是:0663 正確的方式是:"rw-rw-rw-"減去"-------wx",結果爲"rw-rw-r--" 四、mask設置值是跟當前的shell環境相關聯的設置
which命令:在$PATH變量指定的路徑中查找文件
經常使用用法:which -a filename 含義: 在$PATH變量指定的路徑中查找全部文件名爲filename的文件,並將全部找到的文件的路徑打印出來 備註: 1)須要所有匹配,而不能是部分匹配 好比 「which ps」的結果是"/bin/ps" "which p"的結果是空白,"/bin/ps"不是合法結果 2)須要匹配文件名,與路徑中的目錄名匹配不符合要求 好比 "which bin"的結果是空白,"/bin/ps"不是合法結果
whereis命令:在標準的Linux下的幾個目錄中查找文件相關聯的源代碼,幫助文檔,二進制文件
經常使用用法:whereis filename 含義:基於"/var/lib/mlocate/mlocate.db"數據庫,在標準的Linux下的幾個目錄中查找filename相關聯的源代碼,幫助文檔,二進制文件 好比"whereis man",匹配到的幫助文檔爲"/usr/share/man/man7/man.7.gz /usr/share/man/man1/man.1.gz",匹配到的二進制文件爲"/usr/bin/man /usr/bin/X11/man /usr/local/man /usr/share/man" 好比"whereis kernel",匹配到的源代碼"/usr/src/linux-headers-3.16.0-30/kernel /usr/src/linux-headers-3.16.0-30-generic/kernel" 備註: 1)因爲是在標準的幾個目錄中查找,於是擴展性不強 2)經過總體匹配,而不是部分匹配 "whereis ma"不能匹配到"/usr/bin/man" 3)匹配文件名,而不是匹配路徑中的目錄名 "whereis bin"不能匹配到"/bin/ps"
locate命令:基於「/var/lib/mlocate/mlocate.db」這個數據庫查找文件
經常使用用法:locate [-i] PATTERN 含義: 1)查找包含"PATTERN"的文件路徑 2)整個查找過程基於"/var/lib/mlocate/mlocate.db"這個數據庫 3)系統天天更新一次"/var/lib/mlocate/mlocate.db"數據庫 4)能夠經過"updatedb"命令手動更新"/var/lib/mlocate/mlocate.db"數據庫
file命令:打印推測獲得的文件類型
經常使用用法:file -i filename 含義: 打印filename指代的文件的類型和編碼格式,沒有命令可以確切知道某個文件的編碼格式,只能是推測,所以獲得的最終文件編碼格式不必定是正確的 -i選項:以「mime type」形式打印文件類型和編碼格式
stat命令:打印文件信息
經常使用用法:stat 文件路徑 含義:打印文件的一些詳細信息 好比如今有一個"readme"文件,執行"stat readme"命令,可得如圖1所示結果。有一個"Desktop"目錄,執行"stat Desktop"命令,可得 [root@huanqiu ~]# stat web.xml File: `web.xml' Size: 2438 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 2764173 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-09-08 17:25:51.994707928 +0800 Modify: 2016-09-08 17:25:48.595682668 +0800 Change: 2016-09-08 17:25:48.595682668 +0800 [root@huanqiu ~]# stat sudoers/ File: `sudoers/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 2817544 Links: 2 Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-10-20 15:05:06.551702069 +0800 Modify: 2016-01-21 18:35:44.286016733 +0800 Change: 2016-01-21 18:35:44.286016733 +0800 輸出信息中屬性的解釋以下: File:文件名稱 Size:文件的大小,這個大小是文件的使用大小(關於文件的「使用大小」和「佔用大小」可見《Ext文件系統中,文件的「佔用大小」和「使用大小」》)。注意,若是是目錄文件,該屬性值並無累加統計該目錄文件下的子文件的使用大小 Blocks:這個Blocks不是指"inode/block"體系中的block數量。其實指的是某種容量單元的數量。不過能夠經過公式「Blocks*單個該種容量單元所含字節數/一個block節點所含字節數」換算獲得須要的block節點數量,其中單個該種容量單元所含字節數,可經過"stat --format=%B readme"得到。假如單個該種容量單元的含有字節數爲512B,一個block節點含有字節數爲4096B,如今Blocks=8,那麼block節點數量=1。注意,這個屬性極易混淆 IO Block:optimal I/O transfer size hint "regular file":該值表示文件類型 Device:設備號 Inode:Inode節點號 Links:文件的硬連接計數 Access:文件讀取執行權限相關信息 Uid:文件所屬用戶的信息 Gid:文件所屬組的信息 Access:atime Modify:mtime Change:ctime Birth:文件建立時間,通常狀況下不存在該屬性值
basename命令:去除路徑前綴和後綴
經常使用用法:basename NAME [SUFFIX] 含義: 給定一個文件名路徑,除去前導的目錄名,若是指定了SUFFIX,那麼也除去SUFFIX指定的後綴,把最終結果打印出來 好比 basename include/stdio.h .h 除去前導的目錄名"include/",獲得stdio.h 指定SUFFIX=.h,那麼除去.h後綴,最後獲得stdio 打印stdio
dirname命令:獲取路徑的目錄部分
經常使用用法:dirname NAME 含義: 給定一個文件名路徑,除去最後一部分名稱內容,接着除去冗餘的後導"/",打印最終結果; 若是文件名路徑中不包含"/",那麼最後打印"." -------------------------------------------------------------------------------------------------- 擴展小提示: 截取目錄的方法,有如下兩種: 1)dirname命令:用於取給定路徑的目錄部分。這個命令不多直接在shell命令行中使用,通常把它用在shell腳本中,用於取得腳本文件所在目錄, 而後將當前目錄切換過去。 其實就是取所給路徑的倒數第二級及其以前的路徑部分,以下: [root@jenkins-server Shell]# dirname main/protected/xqsjmob/themes/tpl2/common/page_statistics.tpl main/protected/xqsjmob/themes/tpl2/common [root@jenkins-server Shell]# dirname /usr/local/tomcat7/webapps/jenkins/scripts/Shell /usr/local/tomcat7/webapps/jenkins/scripts [root@jenkins-server Shell]# dirname FF_Online.sh #取的結果既是當前路徑目錄下 . 2)能夠用${pathname%/*}截取掉pathname後面的文件部分。 下面比較下這兩種方法的效果:即dirname取的是倒數第二級及其以上級的路徑,而${pathname%/*}取的是"刪除最後一個/符號後的路徑部分" [root@jenkins-server Shell]# pathname=/usr/bin/sort; echo $(dirname $pathname) ${pathname%/*} /usr/bin /usr/bin You have new mail in /var/spool/mail/root [root@jenkins-server Shell]# pathname=/usr/bin/sort/; echo $(dirname $pathname) ${pathname%/*} /usr/bin /usr/bin/sort [root@jenkins-server Shell]# pathname=/usr/; echo $(dirname $pathname) ${pathname%/*} / /usr [root@jenkins-server Shell]# pathname=/usr; echo $(dirname $pathname) ${pathname%/*} /
du命令:查看文件大小
1、經常使用用法 du -sh [--apparent-size] 文件路徑(文件能夠是目錄,也能夠是通常文件) 2、含義與選項 2.一、含義 當文件爲通常文件時,估算該通常文件的大小;當文件爲目錄時,估算"該目錄自身的大小+目錄下全部子文件(遞歸進行)的大小"。 2.二、選項表示的意思 "-s":當du命令的操做對象是一個目錄時,不打印該目錄下子文件的大小統計狀況,只打印目錄整體的大小統計狀況 "-h":以人類可讀形式展現文件大小 "--apparent-size":當不加該選項時,"文件大小"是指文件的"佔用大小";當加了該選項後,"文件大小"是指文件的"使用大小"。 3、實驗 如今有一個"test1"目錄,其下有一個"test2"目錄,"test2"目錄下有一個"test3"目錄,在"test3"目錄下有一個"test4.txt"文件,以下所示: [root@redis-new01 ~]# ll -d test1 drwxr-xr-x 3 root root 4096 Oct 27 21:17 test1 [root@redis-new01 ~]# ls test1/ test2 [root@redis-new01 ~]# ls test1/test2/ test3 [root@redis-new01 ~]# ls test1/test2/test3/ test4.txt "test1"目錄對應1個block節點(大小爲4096B),"test2"目錄也對應1個block節點(大小爲4096B),"test3"目錄也對應1個block節點(大小爲4096B), "test4.txt"文件也對應1個block節點(大小爲4096B),而"test4.txt"這個通常文件對應的block節點中實際使用的空間大小爲12B。 1)以下命令 [root@redis-new01 ~]# du -h test1 8.0K test1/test2/test3 12K test1/test2 16K test1 這是由於: 16K=test1自身的4K+test2自身的4K+test3自身的4K+test4.txt的4K。 2)以下命令 [root@redis-new01 ~]# du -sh test1 16K test1 這是由於: 16K=test1自身的4K+test2自身的4K+test3自身的4K+test4.txt的4K,而且只顯示最終的test1目錄的整體大小。 3)以下命令 [root@redis-new01 ~]# du -sh --apparent-size test1 13K test1 這是由於: 根據右側值向上取整獲得13K=12K+12B=test1自身的4K+test2自身的4K+test3自身的4K+test4.txt的12B,而且只顯示最終的test1目錄的整體大小。