主頁 > 作業系統 > Linux基礎命令

Linux基礎命令

2020-09-17 10:04:44 作業系統

Arch 
     Arch指令主要用于顯示當前主機的硬體結構型別,我們可以看到它輸出的結果有:i386、i486、mips、alpha等。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    arch  [選項]

2、選項串列
    --help    
        顯示此命令的幫助資訊
    --version
        顯示命令的版本資訊

3、實體
點擊(此處)折疊或打開

[root@localhost ntop-4.0.1]# arch
i686 //可以看到當前是32位的i686機器
[root@localhost ntop-4.0.1]# arch --help
用法:arch [選項]...
輸出機器的體系結構。
--help        顯示此幫助資訊并退出
--version        顯示版本資訊并退出
請向[email protected] 報告arch 的錯誤
GNU coreutils 專案主頁:
GNU 軟體一般性幫助:
請向 報告arch 的翻譯錯誤
要獲取完整檔案,請運行:info coreutils 'arch invocation'
[root@localhost ntop-4.0.1]# arch --version
arch (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
許可證:GPLv3+:GNU 通用公共許可證第3 版或更新版本。
本軟體是自由軟體:您可以自由修改和重新發布它。
在法律范圍內沒有其他保證。
由David MacKenzie 和Karel Zak 撰寫。
[root@localhost ntop-4.0.1]#




lspci
    lspci是一種實用程式,用于在系統中顯示有關pci總線的資訊以及連接到它們的設備。
    默認情況下,它顯示了一個簡單的設備串列。使用下面描述的選項可以請求更詳細的輸出或其他程式用于決議的輸出。
    如果要報告PCI設備驅動程式或lspci本身中的bug,請使用選項“lspci-vvx”或更好的“lspci-vvxxx”的輸出(不過,可能會有警告)。
    輸出的某些部分,特別是在高度冗長的模式下,只有經驗豐富的PCI黑客才能理解Proba-Bly。有關欄位的確切定義,請參閱PCI規范或head er.h和/usr/include/linux/pci.h檔案。
    在許多作業系統上,對PCI配置空間的某些部分的訪問僅限于root用戶,因此對于普通用戶來說,lspci的功能是有限的。然而,lspci盡力顯示盡可能多的可用資訊,并將所有其他資訊標記為<訪問拒絕>文本
    該命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    lspci  [選項]
    lspci命令中,我們經常會看到一些“[]:[].[]”這樣格式的數字,例如“00:01.0”,這一個引數是總線編號,第二個是插槽編號,第三個是功能編號,它們都是十六進制的數字。

2、選項串列
    1)基礎顯示模式
    -m
        以向后兼容并且機器可讀的方式轉儲設備資訊
    -mm
        以機器可讀的方式轉儲設備資訊,以便腳本決議
    -t
        以樹形結構顯示pci設備的層次關系,包含所有總線、橋梁、設備和它們之間的連接
    2)顯示選項
    -n
        顯示pci設備的廠商和設備代碼
    -v
        顯示所有設備的詳細資訊
    -vv
        以更加詳細的方式顯示設備資訊
    -k
        顯示處理每個設備的內核驅動程式以及能夠處理該設備的內核模塊。默認情況下,當-v以正常的輸出模式打開時。(目前只在內核2.6或更高版本的Linux上作業。)
    -x
        顯示配置空間標準部分的十六進制轉儲(CardBus橋的前64位元組或128位元組)。
    -xxx
        顯示整個PCI配置空間的十六進制轉儲。當您試圖讀取配置空間的某些部分時,只有當幾個PCI設備崩潰時,它才可用,而且只適合root用戶。(這種行為可能沒有違反PCI標準,但至少非常愚蠢)。然而,這樣的設備很少見,所以您不必太擔心
    -xxxx
        顯示擴展(4096位元組)PCI配置空間在PCI-X2.0和PCIExpress總線上可用的十六進制轉儲
    -b
        以總線為中心的視圖。顯示由pci總線上的卡看到的所有irq編號和地址。注意,不是有內核看到的
    -D
        始終顯示PCI域號。默認情況下,lspci在只有域0的機器上略過它們。
     3)決議ID為名稱的選項
    -n
        將PCI供應商和設備代碼顯示為編號,而不是在PCI ID串列中查找它們。
    -nn
        顯示pci供應商和設備的代碼和名字
    -q
        如果在本地pci.id檔案中找不到設備,則使用DNS查詢中央PCI ID資料庫。如果DNS查詢成功,結果將快取在~/.pciids-cache中,即使-q不再給出,也會在后續運行中識別。請在自動腳本中使用此開關時要小心,以避免資料庫服務器超載。
    -qq
        和“-q”一樣,但是本地快取被重置
    -Q
        查詢中央資料庫,即使是本地也有快取資料可查。如果您懷疑顯示的條目是錯誤的,請使用此方法。
    4)選擇設備的選項
    -s [域]:[總線]:[插槽].[功能]
        只顯示指定域中的設備(如果您的計算機有幾個主機橋接器,它們可以共享公共總線編號空間,或者每個設備可以自己尋址PCI域;域編號為0到ffff)、總線編號(0到ff)、插槽編號(0至1f)、函式編號(0至7)。地址可以省略或設定為“*”,這兩者都意味著“任何值”。所有數字都是十六進制的。例如,“0:”表示總線0上的所有設備,“0”表示設備0在任何總線上的所有功能,“0.3”在所有總線上選擇設備0的第三功能,“4”僅顯示每個設備的第四個功能。
    -d [廠商:設備]
        顯示指定廠商和設備的資訊,廠商號和設備號都是十六進制。
    5)其他選項
    -i 
        指定pci設備編號檔案,默認檔案是/usr/share/hwdata/pci.ids
    -p 
        使用指定檔案作為PCI ID的映射檔案,默認使用/lib/Module/kernel_version/Modes.pcimap
    -M
        呼叫總線映射模式,它對所有pci設備,包括配置錯誤的橋后面的設備進行徹底掃描。此選項只在直接硬體訪問模式下提供有意義的結果,通常需要根權限。請注意,總線映射程式只掃描pci域0。
    6)PCI設備訪問選項
    -A 
        庫支持多種方法來訪問PCI硬體。默認情況下,它使用第一個可用的訪問方法,但您可以使用此選項覆寫此決定。你可以使用“-A help”來先看可用的方法
    -O =
        庫的行為由多個命名引數控制。此選項允許設定任何引數的值。使用“-Ohelp“獲取已知引數及其默認值的串列。
    -H1
        通過Intel配置機制1直接訪問硬體
    -H2
        通過Intel配置機制2直接訪問硬體
    -F 
        與其訪問真正的硬體,不如從先前運行的lspci-x生成的給定檔案中讀取設備及其配置暫存器的值串列,這對于分析用戶提供的錯誤報告非常有用,因為您可以任何方式顯示硬體配置,而不需要使用更多轉儲請求來干擾用戶。
    -G
        提高庫的除錯級別

3、關于選項的說明
    1)關于“–m”選項
    如果您打算自動處理lspci的輸出,請使用本節中描述的機器可讀的輸出格式之一(-m、-vm、-vmm)。所有其他格式都可能在lspci的不同版本之間發生變化。所有的數字都是以十六進制列印的。如果要處理數字ID而不是名稱,請添加-n開關.
在簡單格式中,每個設備都在一行上進行描述,這些引數被格式化為適合傳遞給shell腳本的引數,即由空格分隔的值,必要時參考和轉義。其中一些引數是位置:槽、類、供應商名稱、設備名稱、子系統名稱和子系統名稱(如果設備沒有子系統,最后兩個引數是空的);其余的引數是選項
    2)關于“-vmm”選項
    詳細的輸出是由空行分隔的記錄序列,每條記錄用一行來描述一個設備,每一行包含一個‘tag:value’對。標記和值由單個制表符分隔。記錄或記錄中的行都不按任何特定順序排列。標記區分大小寫。下面是已經定義的tag:
    Slot,設備所在的插槽名稱
    Class,類名
    Vendor,廠商名
    Device,設備名
    SVendor,子系統供應商名字
    SDevice,子設備名字
    PhySlot,設備所在的物理插槽
    Rev,修序號
    ProgIf,編程介面
    Driver,當前正在處理設備的內核驅動程式
    Module,內核模塊的報告

4、實體
    1)以機器可讀的方式顯示
[root@localhost ntop-4.0.1]# lspci -m
00:00.0 "Host bridge" "Intel Corporation" "440FX - 82441FX PMC [Natoma]" -r02 "" ""
00:01.0 "ISA bridge" "Intel Corporation" "82371SB PIIX3 ISA [Natoma/Triton II]" "" ""
00:01.1 "IDE interface" "Intel Corporation" "82371AB/EB/MB PIIX4 IDE" -r01 -p8a "" ""
00:02.0 "VGA compatible controller" "InnoTek Systemberatung GmbH" "VirtualBox Graphics Adapter" "" ""


    2)顯示設備代碼和名字
[root@localhost ntop-4.0.1]# lspci –nn
//設備代碼0600, 廠商代碼8086:1237
00:00.0 Host bridge [0600: Intel Corporation 440FX - 82441FX PMC [Natoma [8086:1237 (rev 02)
00:01.0 ISA bridge [0601: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II [8086:7000
00:01.1 IDE interface [0101: Intel Corporation 82371AB/EB/MB PIIX4 IDE [8086:7111 (rev 01)


    3)以樹形結構顯示
[root@localhost ntop-4.0.1]# lspci –t
//總線編號,插槽,功能編號
-[0000:00-+-00.0
           +-01.0
           +-01.1
           +-02.0


    4)顯示指定位置的設備資訊
[root@localhost ntop-4.0.1]# lspci -s 0000:01.0
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II


    5)顯示指定廠商和設備號的設備資訊
[root@localhost ntop-4.0.1]# lspci -d 8086:1237
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma (rev 02)










uj5u.com熱心網友回復:

lsusb
    顯示本機的usb設備串列,可以顯示出usb的詳細資訊,包括設備的讀取速度和描述符。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    lsusb  [選項]

2、選項串列
    -v
        告訴lsusb詳細顯示所示設備的詳細資訊。這包括設備當前速度的配置描述符。如果可用,類描述符將顯示USB設備類,包括集線器、音頻、HID、通信和芯片卡。
    -s [[bus]:][devnum]
        顯示指定總線和設備號的設備資訊,總線和設備號用十進制標識。格式:lsusb –s 00:01
    -d [vendor]:[product]
        顯示指定廠商和產品編號的設備,用十六進制表示編號。格式:lsusb –d 8086: 
    -D
        顯示指定設備檔案的設備資訊,例如:lsusb –D /proc/bus/usb/001/001。只有root用戶才可以使用這個選項
    -t
        以樹狀結構顯示
    -V
        指令版本資訊

    如果指定的設備沒有被找到,那么回傳一個非0值。/usr/share/hwdata/usb.ids檔案中記錄了所有的USB設備節點的資訊,包括制造商、產品號、類、子類、協議等等。

3、實體
    1)直接顯示簡單的設備資訊
    [root@localhost ntop-4.0.1]# lsusb
    //總線號      設備號          廠商ID
    Bus 001      Device 001:   ID 1d6b:0001 Linux Foundation 1.1 root hub
    2)顯示詳細資訊
    [root@localhost ntop-4.0.1]# lsusb -v
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Device Descriptor:      //設備描述符
    bLength                18
    bDescriptorType         1
      …
    Hub Descriptor:         //集線器描述符
    bLength              11
     …
    Hub Port Status:       //集線器埠狀態
       Port 1: 0000.0100 power
       Port 2: 0000.0100 power
      …
    Device Status:     0x0003   //設備狀態
    Self Powered
    Remote Wakeup Enabled
    3)顯示指定總線上的設備
    [root@localhost ntop-4.0.1]# lsusb -s 001:001
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    4)顯示指定廠商的設備資訊
    [root@localhost ntop-4.0.1]# lsusb -d 1d6b:001
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    5)以樹狀結構顯示
    [root@localhost ntop-4.0.1]# lsusb -t
    Bus#  1
    `-Dev#   1 Vendor 0x1d6b Product 0x0001

uj5u.com熱心網友回復:

eject
     eject指令允許在軟體控制下彈出可移動媒體(通常是光碟、軟盤、磁帶或Jaz或ZIP磁盤)。該命令還可以控制一些由某些設備支持的自動彈出功能的多光碟轉換器,并關閉一些光碟驅動器的盤。

    對應于name的設備被彈出。名稱可以是一個設備檔案或掛載點,可以是一個完整的路徑,也可以是前面省略的“/dev”、“/media”或“/mnt”。如果未指定名稱,則使用默認名稱“cdrom”。

    根據設備是CD ROM、SCSI設備、可移動軟盤還是磁帶,有四種不同的彈出方法。默認情況下,彈出將按順序嘗試所有四種方法,直到成功為止。如果該設備目前已安裝,則在彈出前將其卸載。

    此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    eject  -h
    eject [-vnrsfmqp]  []
    eject [-vn]  -d
    eject [-vn]  -a  on|off|1|0 []
    eject [-vn]  -c  slot []
    eject [-vn]  -i  on|off|1|0 []   
    eject [-vn]  -t  []
    eject [-vn]  -T  []
    eject [-vn]  -x   []
    eject [-vn]  -X  []
    eject -V
 
2、選項串列
    -h | --help
        顯示簡單的幫助檔案
    -V | --version
        顯示命令版本資訊,然后退出
    -v | --verbose
        執行指令的時候顯示詳細資訊,可以在命令列看到指令在干什么
    -d | --default
        顯示默認的設備名字(cdrom)
    -a on|1|off|0
        這個選項控制自動彈出模式,只有某些設備才支持。如果是能這個開關,設備在關閉的時候會自動彈出。
    -c | --changerslot
        使用此選項,可以從ATAPI/IDE CD-ROM轉換器中選擇CD插槽。使用此特性需要Linux2.0或更高版本。當一個更改請求作業的時候,無法使用CD-ROM驅動器(掛載的資料CD或播放音樂CD)。還請注意,轉換器的第一個插槽稱為0,而不是1。
    -i on|1|off|0
        此選項可以鎖定彈出按鈕,使其不作業。當啟用時,當按下按鈕時,驅動器將不會彈出。這是有用的,當您攜帶筆記本電腦在一個袋子或箱子,不希望它彈出,如果該按鈕是無意中按下。
    -t | --trayclose
        有了這個選項,驅動器被賦予一個CD-ROM托盤關閉命令。并非所有設備都支持此命令。
    -T | --traytoggle
        如果CD-ROM托盤已經打開,那么它將關閉;如果CD-ROM托盤已經關閉,那么它將彈出。并非所有設備都支持此命令,因為它使用了上面的CD-ROM托盤關閉命令。
    -x | --cdspeed
        使用此選項,CDROM驅動器可以進行選擇速度。速度引數是一個指示所需速度的數字(例如,8表示8X速度),或0表示最大資料速率。并非所有設備都支持此命令,而且您只能指定驅動器能夠達到的速度。每次媒體更改時,此選項將被清除。此選項可以單獨使用,也可以與-t和-c選項一起使用。
    -X | --listspeed
        顯示cdrom的可用速度。使用此選項,將探測CD-ROM驅動器以檢測可用的速度。輸出一個速度串列,可用作-x選項的引數。這只適用于Linux2.6.13或更高版本,在以前的版本上只報告最高速度。還請注意,某些驅動器可能無法正確報告速度,因此選項不適用于它們。
    -n | --noop
        顯示所選的設備,但是不執行任何操作
    -r | --cdrom
        彈出 cdrom設備
    -s | --scsi
        彈出SCSI設備
    -f | --floppy
        彈出 floppy設備
    -q | --tape
        彈出 磁帶設備
    -p | --proc
        允許使用/proc/mounts代替/etc/mtab
    -m | --no-umount
        此選項允許eject與自動掛載可移動媒體的設備驅動程式一起作業,因此這些設備必須總是已掛載的。該選項告訴eject不要嘗試卸載給定的設備,即使它是根據/etc/mtab或/proc/掛載安裝的。
 
3、example
    彈出默認設備
        eject
    彈出一個名字為cdrom的設備或者掛載點
        eject cdrom
    使用設備名來彈出
        eject /dev/cdrom
    使用掛載點彈出
        eject /mnt/cdrom
    彈出第4個IDE設備
        eject hdd
    彈出第一個SCSI設備
        eject sda
    使用SCSI磁區名稱彈出
        eject sda4
    在多盤交換機上選擇第5盤
        eject –v –c4 /dev/cdrom
    打開聲音放映機CD-ROM上的自動彈出功能
        eject –a on /dev/sbpcd
 
4、說明
     eject指令執行成功之后會回傳0,如果失敗就回傳1。
    eject指令只適用于支持四種彈出方法中的一種或多種方法的設備。這包括大多數光碟驅動器(IDE、SCSI和專有)、一些SCSI磁帶驅動器、Jaz驅動器、ZIP驅動器(并行口、SCSI和IDE版本)和LS 120可移動軟盤。用戶還報告說,在Sun SPARC和Apple Macintosh系統上,軟盤驅動器也取得了成功。如果彈出無法作業,很可能是對設備的內核驅動程式的限制,而不是彈出程式本身的限制。
    -r、-s、-f和-q選項允許控制用于彈出的方法。可以指定多個方法。如果沒有指定這些選項,則會嘗試所有四個選項(在大多數情況下,這很好)。
    eject并不總是能夠確定設備是否已安裝(例如,它是否有多個名稱)。如果設備名稱是一個符號鏈接,彈出將跟隨該鏈接并使用它所指向的設備。
    如果eject確定該設備可以具有多個磁區,則它將嘗試在彈出之前卸載該設備的所有已安裝磁區。如果卸載失敗,程式將不會嘗試彈出媒體。
    你可以彈出一張音頻CD。如果驅動器是空的,一些CDROM將拒絕打開托盤。有些設備不支持托盤關閉命令。
如果啟用了自動彈出功能,則在運行此命令后,驅動器將始終彈出。并不是所有的linux內核CDROM驅動程式都支持自動彈出模式,無法找到自動彈出模式的狀態。
    您需要適當的權限才能訪問設備檔案。要彈出某些設備(例如SCSI設備),需要以root或setuidroot的形式運行。
    用于查找設備的啟發式方法(給定名稱)如下所示。如果名稱以尾隨斜杠結尾,則洗掉它(這是為了支持使用shell檔案名完成生成的檔案名)。如果名稱以“.”或“/”開頭,則嘗試將其作為設備檔案或掛載點打開。如果失敗,它會嘗試將‘/dev/’、‘/media/’、‘/mnt/’、‘/dev/cdroms’、‘/dev/rdsk/’、‘/dev/dsk/’和最后‘./’放在名稱前面,直到找到可以打開的設備檔案或掛載點。        安裝設備的程式檢查/etc/mtab。如果失敗,它還會檢查/etc/fSTAB以查找當前未掛載設備的掛載點。
    建議創建符號鏈接,如/dev/cdrom或/dev/zip,以便eject可以使用容易記住的名稱來確定合適的設備。
    要保存型別,可以為特定設定作業的彈出選項創建shell別名。
 
5、實體
     1)沒有指定設備型別,直接彈出cdrom。此種情況下會依次嘗試所有的方式,直到彈出為止。
    [root@localhost ~]# eject –v     //使用-v來顯示指令執行的程序
    eject: using default device `cdrom'
    eject: device name is `cdrom'
    eject: expanded name is `/dev/cdrom'
    eject: `/dev/cdrom' is a link to `/dev/sr0'
    eject: `/dev/sr0' is not mounted
    eject: `/dev/sr0' is not a mount point
    eject: checking if device "/dev/sr0" has a removable or hotpluggable flag
    eject: `/dev/sr0' is not a multipartition device
    eject: trying to eject `/dev/sr0' using CD-ROM eject command  //嘗試第一種彈出方式
    eject: CD-ROM eject command failed
    eject: trying to eject `/dev/sr0' using SCSI commands   //嘗試第二種彈出方式
    eject: SCSI eject succeeded
     2)使用“-r”選項,彈出cdrom
    [root@localhost ~]# mount    //查看是否有光碟掛載
    /dev/mapper/VolGroup-lv_root on / type ext4 (rw)
    …
    /dev/sr0 on /media/VBox_GAs_5.2.16 type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
 
    [root@localhost ~]# eject -v –r    //彈出光碟
    eject: using default device `cdrom'
    …
    eject: trying to eject `/dev/sr0' using CD-ROM eject command
    eject: CD-ROM eject command succeeded
 

uj5u.com熱心網友回復:

hwclock  

    hwclock是一種訪問硬體時鐘的工具,可以顯示當前時間,將硬體時鐘設定為指定的時間,將硬體時鐘設定為系統時間,以及從硬體時鐘設定系統時間。您還可以定期運行hwlock以插入或洗掉硬體時鐘中的時間,以補償系統漂移(如果繼續運行,則該時鐘始終以一定的速率獲得或丟失時間)。

    該命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    hwclock  [functions]  [options]

2、選項串列
    下面的選項告訴hwclock指令該執行那個函式
    -r | --show
        讀取硬體時鐘并在標準輸出上列印時間。顯示的時間總是本地時間,即使您將硬體時鐘保持在協調的世界時間。請參見-UTC選項。
    --set
        將硬體時鐘設定為-date選項指定的時間
    -s | --hctosys
        從硬體時鐘設定系統時間。還將內核的時區值設定為由TZ環境變數和/或/usr/share/zoneinfo指示的本地時區,正如tzset(3)所解釋的那樣。內核時區值的過時的tz_dsttime欄位被設定為DST_NONE。(有關此欄位過去的含義的詳細資訊,請參閱日期的settimeofday(2)。
這是在系統啟動腳本中使用的一個很好的選項
    -w | --systohc
        將硬體時鐘設定為當前的系統時間
    --systz
        根據當前時區設定內核的時區并重置系統時間,系統時間僅在啟動后的第一次呼叫時重置。本地時區被認為是TZ環境變數和/或/usr/share/zoneinfo所指示的,tzset(3)將解釋它們。內核時區值的過時tz_dsttime欄位設定為DST_NONE。(有關此欄位過去的含義的詳細資訊,請參閱日期的settimeofday(2)。這是-hctosys的另一個選項,它不讀取硬體時鐘,并且可以在最近2.6內核的系統啟動腳本中使用,因為您知道系統時間包含硬體時鐘時間。如果硬體時鐘已經在協調時,則不會重置。
    --adjust
        從硬體時鐘中增加或減去時間,以說明自上次時鐘設定或調整以來的系統漂移。請參閱下面的討論
    --getepoch
        將內核的硬體時鐘時紀元列印到標準輸出。這是在AD中參考硬體時鐘中的零年值的年份數。正在使用的約定是,硬體時鐘中的年份計數器包含1952年以來的完整年份數,然后是內核的硬體計數器時代值必須是1952年。每當hwlock讀取或設定硬體時鐘時,就會使用這個紀元值。epoch只有在Alpha機器上有。
    --setepoch
        將內核的硬體時鐘紀元值設定為--epoch選項指定的值。
    -v | --version
        在標準輸出上顯示hwclock的版本
    --date=date_string
        如果指定-set選項,則需要此選項。否則,將忽略該選項。這將指定設定硬體時鐘的時間。選項是date指令的引數。例如:hwclock --set --date="9/22/96 16:45:05"。引數在本地時間,即使您將硬體時鐘保持在協調的世界時間。請參見-UTC選項。
    --epoch=year
        指定硬體時鐘時***始的年份,即在AD中,硬體時鐘的年份計數器中的零值所指的進入AD的年份數。它與-setepoch選項一起使用,以設定內核的硬體時鐘時代概念,或者指定用于直接ISA訪問的時代。例如:
    hwclock --setepoch --epoch=1952

    下面的選項配合函式使用
    -u | --utc | --localtime
        指示硬體時鐘分別保持在協調的世界時間或本地時間。您可以選擇是否將時鐘保持在協調世界協調時或本地時間,但時鐘中沒有顯示任何資訊。這是你所選擇的,所以這個選項就是你如何將資訊提供給時鐘。如果您指定了這些選項中的一個錯誤的(或者沒有指定,并且選擇了錯誤的默認值),那么硬體時鐘的設定和查詢都將被搞砸。如果您沒有指定-utc或-localtime,則默認值以最后一次使用hwlock設定時鐘時指定的值為準(即,hwlock成功地使用-set、-system ohc或-調整器選項運行),如adjtime檔案中所記錄的。如果adjtime檔案不存在,則默認值為本地時間。
    --noadjfile
        禁用/etc/adjtime.hwlock提供的工具,不使用此選項讀取或寫入該檔案。在使用此選項時,必須指定-UTC和--localtime
    --adjfile=ilename
        覆寫默認的/etc/adjtime檔案
    -f | --rtc=filename
        重寫默認/dev檔案名,在許多平臺上為/dev/rtc,但可能是/dev/rtc0、/dev/rtc1,等等。
    --directisa
        只有在ISA機器或Alpha上才有意義(粗略地說,它實作了足夠多的ISA機器來實作hwlock的目的)。對于其他機器,它沒有作用。這個選項告訴hwlock使用顯式I/O指令來訪問硬體時鐘。如果沒有這個選項,hwlock就會嘗試。若要使用/dev/rtc設備(假定它由RTC設備驅動程式驅動),如果它無法打開設備(用于讀取),它將使用顯式I/O指令。
    --badyear
        表示硬體時鐘無法存盤超出1994-1999年范圍的年份。在一些BIOSes(幾乎所有在4/26/94至5/31/95之間制造的BIOSes)中都存在一個問題,在這些BIOSes中,它們無法處理1999年之后的年份。如果試圖將世紀價值設定為小于94(或95 in)的值。在某些情況下,實際設定的值為94(或95),因此,如果您有這些機器中的一臺,則hwlock不能在1999年之后設定,也不能以正常的方式使用時鐘的值作為真正的時間。為了彌補這一點(沒有BIOS更新,這肯定更好),請始終使用-如果您有這些機器中的一臺,就使用-壞年份。在adjtime檔案中假設日期是過去一年內的日期。要想讓它發揮作用,你最好每年至少運行一次hwclock --set或hwlock –systohc。雖然hwlock在讀取硬體時鐘時忽略了年份值,但當它設定時鐘時,它會設定年份值,將其設定為1995、1996、1997或1998,無論哪個年份在閏年周期中所處的位置與真正的年份相同。這樣,硬體時鐘就會插入。如果你讓硬體時鐘在沒有設定的情況下運行一年以上,這個方案可能會失敗,最后你可能會損失一天。
    --srm
        此選項等價于--epoch=1900,用于使用srm控制臺指定alphad上最常見的歷元。
    --arc
        此選項等價于--epoch=1980,用于使用ARC控制臺指定ALPHS上最常見的歷次(但Ruffans有1900年)。
    --jensen | --funky-toy
        這兩個選項指定了您擁有的Alpha機器的型別。如果您沒有Alpha,則它們是無效的,如果有,它們通常是不必要的,因為hwlock應該能夠自行確定運行在什么上,至少在安裝/proc時是這樣的。(如果您發現您需要這些選項之一使hwlock作業,請與維護人員聯系,看看程式是否可以改進以自動檢測您的系統。‘hwlock --debug’和‘cat/proc/cpuinfo’的輸出可能會引起人們的興趣。)
    --jensen代表運行在Jensen模式。
    --funky-toy意味著在您的機器上,必須使用UF位而不是硬體時鐘中的UIP位來檢測時間轉換。選項名中的“toy”是指機器一年中的時間
    --test
        測驗程式,不改變任何設定
    --debug
        顯示大量關于hwlock內部正在做什么的資訊,其中一些功能是復雜的,這個輸出可以幫助您理解程式是如何作業的。

3、說明
    一般在作業系統中都會有兩個時鐘,硬體時鐘是主板上的定時器時鐘,系統時鐘是系統的內核時鐘,它們相互不影響。
    1)硬體時鐘
    這個時鐘,運行獨立于任何控制程式運行在CPU中,甚至當機器關閉。在ISA系統中,這個時鐘被指定為ISA標準的一部分。控制程式可以讀取或設定這個時鐘為整秒,但控制程式也可以檢測1秒時鐘的邊緣,因此該時鐘實際上具有無限的精度。

    這種時鐘通常被稱為硬體時鐘、實時時鐘、RTC、BIOS時鐘和CMOS時鐘。硬體時鐘以其大寫的形式被hwlock所發明,因為其他所有的名稱都不適合誤導。例如,一些非ISA系統有幾個實時時鐘。一個非常低功耗的I2C或SPI時鐘芯片可以與備用電池一起作為硬體時鐘,以初始化一個功能更好的集成實時時鐘,用于大多數其他用途。

    2)系統時鐘
    這是由Linux內核內的時鐘保持的時間,由計時器中斷驅動。(在ISA機器上,計時器中斷是ISA標準的一部分)。它只有在linux在機器上運行時才有意義。系統時間是從1970年世界協調時(UTC)1月1日00:00開始的秒數(或者更簡潔地說,是1969年以來的秒數)。不過,系統時間不是整數,它實際上是無限的。系統時間是重要的時間。Linux系統中硬體時鐘的基本目的是在Linux不運行時保持時間。在Linux啟動時,將系統時間從硬體時鐘初始化,然后不再使用硬體時鐘。請注意,在設計ISA的DOS中,硬體時鐘是唯一的實時時鐘。

    重要的是,當系統運行時,系統時間不存在任何不連續性,比如使用date命令來設定它。但是,在系統運行時,您可以對硬體時鐘做任何您想做的事情,而下一次Linux啟動時,它將使用硬體時鐘的調整時間進行設定。

    Linux內核維護系統的本地時區的概念。但是不要被誤導-幾乎沒有人關心內核認為它在哪個時區。相反,關心時區的程式(可能因為他們想為您顯示本地時間)幾乎總是使用更傳統的方法。確定時區:它們使用“tz”環境變數或“/usr/share/zoneinfo”目錄,如tzset(3)的手冊頁所解釋的那樣。時區值是錯誤的,vFAT檔案系統會在檔案上報告并設定錯誤的時間戳。

    當您使用”--hctosys”選項設定系統時間時,hwlock將內核時區設定為“tz”或“/usr/share/zoneinfo”所指示的值。

    時區值實際上由兩部分組成:1)欄位“tz_minutesWest”表示本地時間(未根據DST進行調整)滯后于UTC;2)欄位“tz_dsttime”,指示當前在本地有效的夏令時(DST)約定的型別。第二個欄位不在Linux下使用,始終為零。

    3)hwclock如何訪問硬體時鐘
    hwlock使用多種不同的方法來獲取和設定硬體時鐘值,最常見的方法是對設備特殊檔案“/dev/rtc”執行I/O操作,假定該檔案是由rtc設備驅動程式驅動的。然而,這種方法并不總是可用的。首先,rtc驅動程式是linux中比較新的一種。此外,雖然有一些版本的rtc驅動程式可以在decalpha上作業,但似乎有大量的alpha無法作業(常見的癥狀是時鐘掛起)。此外,最近的linux系統對rtc有更多的通用支持,甚至支持不止一個的系統,所以您可能需要通過指定/dev/rtc 0或/dev/rtc 1來覆寫默認值。

    在舊系統中,訪問硬體時鐘的方法取決于系統硬體。

    在ISA系統中,hwlock通過對埠0x70和0x71進行I/O操作,可以直接訪問構成時鐘的“CMOS存盤器”暫存器。它使用實際的I/O指令,因此只有在超級用戶有效用戶ID的情況下才能這樣做。(對于jensen Alpha,hwlock無法執行這些I/O指令,因此它使用設備檔案“/dev/port”,它提供了與I/O子系統幾乎一樣低的介面)。這是一種非常糟糕的訪問時鐘的方法,因為用戶空間程式通常不應該進行直接I/O和禁用中斷。但是在ISA和Alpha系統中,這是唯一的方式。

    在m68k系統上,hwlock可以通過控制臺驅動程式訪問時鐘,通過設備檔案“/dev/tty1”訪問時鐘。

    hwlock嘗試使用檔案“/dev/rtc”。如果內核沒有編譯“/dev/rtc”,或者它無法打開“/dev/rtc”,那么hwlock將回傳到另一種方法(如果可用的話)。在ISA或Alpha計算機上,您可以強制hwclock使用CMOS暫存器的直接操作,而無需通過指定“--directisa”選項。

    4)校準功能adjust
    硬體時鐘通常不是很精確,但是它的許多不準確是完全可以預測的,它每天得到或失去相同的時間。這被稱為系統漂移。hwlock的“調整”功能允許您進行系統校正以糾正系統漂移。它的作業方式如下:hwlock保存了一個檔案“/etc/adjtime”,它保存了一些歷史資訊。

    假設您從沒有adjtime檔案開始,發出hwlock-set命令將硬體時鐘設定為真實的當前時間。hwlock創建adjtime檔案,并在其中記錄當前時間,作為最后一次校準時鐘。5天后,時鐘增加了10秒,因此您可以發出另一個“hwlock --set”命令來設定它。回傳10秒。hwlock更新adjtime檔案,顯示當前時間作為最后一次校準時鐘,并以系統漂移速率記錄每天2秒。24小時過去,然后發出“hwlock --adjust”命令。hwlock查閱adjtime檔案,看到時鐘離開時每天增加2秒。一個人呆了整整一天。所以它從硬體時鐘中減去2秒。然后,它記錄當前時間作為最后一次調整時鐘的時間。又過了24小時,你又發出了另一個“hwclock --adjust”指令。hwclock做了同樣的事情:減去2秒,用當前時間更新adjtime檔案,這是最后一次調整時鐘。
    
    每次您校準時鐘(使用--set或—systohc)時,hwlock根據上次校準的時間、上次調整后的時間、在任何中間的調整中假定的漂移率以及時鐘當前的關閉量,重新計算系統漂移率。在hwclock使用的任何時候,都會出現少量的誤差,因此它不會進行小于1秒的調整。稍后,當您再次請求調整時,累積漂移將超過1秒鐘,而hwlock則會進行調整。

    在系統啟動時,在“hwlock --hctosys”之前進行hwlock的調整是很好的,并且在系統通過cron運行時也可以定期進行調整。
雖然adjtime檔案的命名僅僅是為了控制時間調整的歷史記錄,但它實際上包含了hwlock在從一個呼叫到下一個呼叫時記憶資訊時使用的其他資訊。adjtime檔案的格式是ASCII:
    第1行的3個數字數字,用空格隔開,分別代表:a)系統漂移率,每天以秒為單位,浮點小數點;b)自1969年世界協調時以來最近調整或校準的秒數,小數整數;c)零(與時鐘(8)兼容)為十進制整數。
    第2行一個數字,代表自1969年世界協調時以來最近一次校準產生的秒數。如果還沒有校準,或者已知任何先前的校準都是沒有意義的,那么值就是0(例如,因為在校準之后,硬體時鐘已經被找到,不包含有效時間)。這是一個十進制整數。
    第3行是“utc”或“local”。指示硬體時鐘是設定為協調世界時間還是設定為本地時間。

    5)內核如何自動同步硬體時鐘
    在某些系統中,您應該注意到硬體時鐘保持同步的另一種方式。Linux內核有一種模式,它每11分鐘將系統時間復制一次到硬體時鐘。這是一個很好的模式,當您使用一些復雜的東西,比如NTP來保持系統時間同步時。(NTP是一種保持系統時間同步的方法,它可以與網路上的某個時間服務器或連接到您的系統的無線電時鐘保持同步。參見RFC 1305)。

    這個模式(我們稱之為“11分鐘模式”)是關閉的,直到有東西打開它。ntp守護行程xntpd就可以打開它。您可以通過運行任何東西來關閉它,包括“hwlock --hctosys”,它以老式的方式設定系統時間。

    如果你的系統以11分鐘的模式運行,不要使用“hwlock --adjust”或“hwlock-hctosys”。在啟動時使用“hwlock --hctosys”來獲得一個合理的系統時間是可以接受的,直到您的系統能夠運行為止。從外部源設定系統時間并啟動11分鐘模式


4、實體
1)不使用任何引數,直接查看硬體時鐘
[root@localhost ntop-4.0.1]# hwclock
2018年08月23日
星期四 15時01分28秒  -0.577410 seconds

2)設定硬體時鐘
[root@localhost ntop-4.0.1]# hwclock --set --date="0904"    //設定硬體時鐘,需要date引數來配合使用
[root@localhost ntop-4.0.1]# hwclock
2018年09月04日
星期二 09時04分09秒  -0.479386 seconds

3)將硬體時鐘設定成本地時間格式
[root@localhost ntop-4.0.1]# hwclock --localtime
2018年09月04日
星期二 01時05分46秒  -0.462990 seconds

4)將硬體時鐘設定成系統時間
[root@localhost ntop-4.0.1]# date      //查看當前系統時間
2018年 09月 04日
星期二 12:25:15 CST
[root@localhost ntop-4.0.1]# hwclock –w  //將硬體時鐘設定為系統時間
[root@localhost ntop-4.0.1]# hwclock     //查看硬體時鐘
2018年09月04日
星期二 12時25分48秒  -0.263687 seconds


uj5u.com熱心網友回復:

這個放自己博客比較好

uj5u.com熱心網友回復:

du
    以塊為單位,顯示當前目錄下,所有目錄、檔案、子目錄的磁盤使用情況。總結每個檔案的磁盤使用情況,對目錄進行遞回處理
    此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    du  [選項]  [目錄]

2、選項串列
    --help
        幫助
    --version
        顯示命令版本資訊
    -a | --all
        顯示所有的檔案大小,包含目錄、檔案、子目錄。默認情況下不顯示檔案的大小
    --apparent-size
        列印表觀大小,而不是磁盤使用量;雖然表觀大小通常較小,但由于(“稀疏”)檔案中的漏洞、內部碎片、間接塊等原因,它可能更大。
    B | --block-size=SIZE
        設定顯示時的塊大小
    -b | --bytes
        等價于“--apparent-size --block-size=1”
    -c | --total
        產生一個總和統計
    -D | --dereference-args | -H
        只參考命令列中列出的符號鏈接
    --files0-from=F
        總結檔案F中指定的以NUL結尾的檔案名的磁盤使用情況;如果F是“-”,則從標準輸入中讀取名稱
    -h | --human-readable
        以更加易讀的方式來顯示
    --si
        和“-h“一樣,只是顯示單位是1000,而不是1024
    -k
        相當于—block-size=1k
    -m
        相當于—block-size=1M
    -l | --count-links
        如果是硬鏈接,那么記錄次數
    -L | --dereference
        取消參考所有符號鏈接
    -P | --no-dereference
        不要跟隨任何符號鏈接,這是默認的
    -0 | --null
        以0位元組(而不是換行符)結束每一行輸出
    -S | --separate-dirs
        不包括子目錄的大小
    -s | --summarize
        只顯示每個引數的總數
    -x | --one-file-system
        跳過不同檔案系統上的目錄
    -X | --exclude-from=FILE
        排除與檔案中任何模式匹配的檔案
    --exclude=PATTERN
        排除匹配模式的檔案
    --max-depth=N
        只有目錄層數少于N,才列印目錄(或檔案)的總數(或帶有-all);“--max-depth=0 “等價于 ” --summarize “
    --time
        顯示最后修改的時間
    --time=WORD
        將時間顯示為指定的內容而不是修改時間,可以是:atime、access、use、ctime或status。
    --time-style=STYLE
        使用指定的格式顯示時間,時間格式可以是full-iso,long-iso,iso,+FORMAT

    該指令顯示的值的單位是“--block-size”、“DF_BLOCK_SIZE”、“BLOCK_SIZE”,、BLOCKSIZE”這是四個值中第一個可用的值。 除了第一個值是用戶設定的,其他3個都是環境變數。如果這四個值沒有可用的,那么默認是1024(如果設定了POSIXLY_CORRECT,那么就是512)。
顯示的單位可能是:KB,1000;K,1024;MB,100*100;M,1024*1024。

3、實體
1)查看home目錄總大小
[root@192 ~]# du /home -s
2320472 /home
2)使用“--time”選項,顯示最后的修改時間
[root@192 ~]# du /home --time
4 2010-11-12 08:54 /home/test01/.gnome2
4 2010-08-18 23:43 /home/test01/.mozilla/extensions

3)使用“-m”選項,以Mb為單位顯示 
[root@192 ~]# du /home -m
1 /home/test01/.gnome2                //不夠1M的,按照1M處理
1 /home/test01/.mozilla/extensions

4)指定“--time“的顯示 
[root@localhost ~]# du /weijie/ --time=use              //最后使用時間
12 2018-10-08 09:11 /weijie/www.baidu.com
4 2018-10-08 09:11 /weijie/testftp
56 2018-10-13 08:40 /weijie/
[root@localhost ~]# du /weijie/ --time=status            //狀態改變時間
12 2018-10-03 10:09 /weijie/www.baidu.com
4 2018-10-02 09:34 /weijie/testftp
56 2018-10-03 10:09 /weijie/

uj5u.com熱心網友回復:

df
    顯示磁盤磁區上的磁盤使用狀況,可以顯示出檔案系統名稱、大小、掛載點等資訊。df顯示包含每個檔案名引數的檔案系統上可用的磁盤空間。如果不給出檔案名,則顯示所有當前掛載的檔案系統上可用的空間。默認情況下,磁盤空間顯示在1K的塊中,除非設定了環境變數POSIXLY_RIDER,在這種情況下使用512個位元組塊。
    如果引數是包含已掛載檔案系統的磁盤設備節點的絕對檔案名,df將顯示該檔案系統上的可用空間,而不是包含設備節點的檔案系統(始終是根檔案系統)。這樣做的各種系統都需要非常不可移植的檔案系統結構知識。
    此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
df  [OPTION]...  [FILE]...

2、選項串列
    --help
        幫助
    --version
        顯示命令版本資訊
    -a | --all
        顯示所有的檔案系統,包含虛擬檔案系統 
    [檔案]
        顯示指定檔案所在的檔案系統資訊
    -B | --block-size=SIZE
        設定顯示時的塊大小
    --direct
        顯示檔案的統計資訊,而不是掛載點
    --total
        產生一個總和
    -h | --human-readable
        以更加易讀的方式來顯示
    -H | --si
        以更加易讀的方式顯示,但是使用1000為一個單位,而不是1024
    -i | --inodes
        顯示inode資訊
    -k
        等價于”--block-size=1k”
    -l | --local
        顯示本地檔案系統
    --no-sync
        在獲取使用資訊之前,不喚醒同步
    --sync
        在獲取資訊之前喚醒同步
    -P | --portability
        使用POSIX輸出格式
    -t | --type=TYPE
        顯示指定型別的檔案系統資訊
    -T | --print-type
        顯示檔案系統型別
    -x | --exclude-type=TYPE
        不顯示指定的檔案系統

    該指令顯示的值的單位是“--block-size”、“DF_BLOCK_SIZE”、“BLOCK_SIZE”,、BLOCKSIZE”這是四個值中第一個可用的值。 除了第一個值是用戶設定的,其他3個都是環境變數。如果這四個值沒有可用的,那么默認是1024(如果設定了POSIXLY_CORRECT,那么就是512)。
顯示的單位可能是:KB,1000;K,1024;MB,100*100;M,1024*1024。

3、實體
1)使用“-h”選項,以方便閱讀的方式顯示檔案系統資訊
[root@localhost ~]# df –h
//檔案系統名字                      大小    已用    可用   使用百分比   掛載點
Filesystem                        Size    Used   Avail Use%        Mounted on
/dev/mapper/VolGroup-lv_root   25G     13G    11G    56%         /
tmpfs                               811M    292K  810M   1%          /dev/shm
/dev/sda1                          485M    33M    427M   8%          /boot
2)使用“-T”選項,顯示出檔案系統的型別
[root@localhost ~]# df –T
//檔案系統名字                      型別       大小         已用        可用   使用百分比   掛載點
Filesystem                       Type      1K-blocks    Used       Available Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4      25552764     13364332  10890412   56%   /
tmpfs                             tmpfs     829656       292        829364     1%    /dev/shm
/dev/sda1                         ext4     495844       32996      437248     8%    /boot
3)使用“-B”選項,指定顯示時的塊大小是2048kb。注意結果可以和上面對比一下
[root@localhost ~]# df –B 2048
//檔案系統名字                      型別       大小         已用        可用   使用百分比   掛載點
Filesystem                       Type      2K-blocks    Used       Available Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4      12776382    6682164    5445208     56%   /
tmpfs                             tmpfs     414828      146         414682      1%    /dev/shm
/dev/sda1                         ext4     247922       16498     218624       8%    /boot
4)使用“-t”選項,指定顯示“ext4”型別的檔案系統資訊
[root@localhost ~]# df –t ext4
//檔案系統名字                      型別       大小         已用        可用   使用百分比   掛載點
/dev/mapper/VolGroup-lv_root ext4      25552764     13364332  10890412   56%   /
/dev/sda1                         ext4     495844       32996      437248     8%    /boot

uj5u.com熱心網友回復:

不錯,支持下

uj5u.com熱心網友回復:

bc
    bc是一種算數語言,其語法和c語言類似,可以互動執行。通過命令列選項可以獲得一個標準的數學庫。如果請求,在處理任何檔案之前定義數學庫。BC從處理所有檔案的代碼開始。命令列中列出的檔案按所列順序排列。在處理完所有檔案后,BC從標準輸入中讀取。所有代碼都在讀取時執行。(如果檔案包含停止處理器的命令,BC將永遠不會從標準輸入中讀取。
    此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
    bc  [ -hlwsqv ]  [long-options]  [  file ... ] 

2、選項串列
    -h | --help
        幫助資訊
    -v | --version
        顯示命令版本資訊
    -l | --mathlib
        定義標準數學庫
    -i | --interactive
        強制互動
    -w | --warn
        顯示POSIX的警告資訊
    -s | --standard
        使用POSIX標準來處理
    -q | --quiet
        不顯示歡迎資訊

3、說明
  1)資料
  bc中最基本的元素是數字。數字是任意精度的數字。這種精度既包括整數部分,也包括分數部分。所有的數字在內部用十進制表示,所有的計算都用十進制來表示。(此版本截斷除法和乘運算的結果。)數字有兩個屬性:長度和小數位。長度是數字中有效位的總數,小數位是小數點之后的的有效位數。例如,0.000001的長度是6,小數位是6;1935.000的長度是7,小數位是3。
  2)變數
  數字存盤在兩種型別的變數中,簡單變數和陣列。變數名稱以字母開頭,后面跟著任意數量的字母、數字和下劃線。所有字母都必須小寫。(全字母-數字名是擴展名。在POSIX bc中,所有名稱都是一個小寫字母。)變數的型別在背景關系中是明確的,因為所有陣列變數名稱后面都會有方括號([])。
有四個特殊的變數:scale、ibase、obase和last。scale定義了一些操作在小數點之后是如何使用數字的,默認值是0。ibase和obase定義輸入和輸出數字的轉換基。默認值都是基數10。last(擴展)是一個變數。它是最后列印的數字的值。所有這些變數可能都有分配給它們的值,以及運算式中使用的值。
  3)注釋
  bc中的注釋以字符“/*”開頭,以字符“*/”結尾。注釋可以從任何地方開始,并顯示為輸入中的單個空格。(這會導致注釋分隔其他輸入項。例如,在變數名的中間找不到注釋。)注釋包括注釋開始和結束之間的任何新行(行尾)。
為了支持bc腳本的使用,添加了行注釋作為擴展。行注釋從“#”字符開始,繼續到行的結束。行結束字符不是注釋的一部分,而是正常處理的。
如果命令列上的任何檔案無法打開,bc將報告該檔案不可用并終止。

4、關于運算式
  這些數字由運算式和陳述句操作。由于語言設計為互動式,所以陳述句和運算式會盡快執行。沒有“主”程式,而是在遇到時執行代碼。
一個簡單的運算式只是一個常量。BC使用變數ibase指定的當前輸入基將常量轉換為內部十進制數。(函式中有一個例外。)ibase的有效值為2到16,將超出此范圍之后,分配給ibase的值可能是2或16。輸入數字可能包含字符0-9和A-F。(注:它們必須是大寫字母,小寫字母是變數名稱。)無論ibase的值是多少,單數數字總是有該數字的值。(即A=10。)對于多位數字,bc將所有大于或等于ibase的輸入數字更改為IBASE-1的值。這使得FFF始終輸入的最大3位數。
  完全運算式類似于許多其他高級語言。由于只有一種數字,所以沒有混合型別的規則。相反,有關于運算式精度的規則。每個運算式都有一個精度。這是從原始數字的精度、所執行的操作以及在許多情況下變數scale的值匯出的。變數scale的有效值為0到可由c語言整數表達的最大值。
  在以下合法運算式的描述中,“expr”指的是一個完整的運算式,“var”指的是一個簡單的或陣列變數。除非特別提到,結果的精度是所涉及的運算式的最大精度。
      普通運算式

    -expr    結果是對運算式的否定。
    ++var    變數增加1,而新值是運算式的結果
    --var    變數減1,而新值是運算式的結果
    var++    運算式的結果是變數的值,然后變數增加1
    var--    運算式的結果是變數的值,然后變數減1
    expr * expr        運算式的結果是這兩個運算式的乘積
    expr + expo        運算式的結果是這兩個運算式的和
    expr – expr        運算式的結果是這兩個運算式的差
    expr / expr        運算式的結果是這兩個運算式的商。結果的精度是變數scale的值。
    expr % expr        運算式的結果是“余數”
    expr ^ expr        運算式的結果是n次方,第二個運算式必須是整數。如果指數是負數,那么結果的精度是scale
  (expr)    強制對運算式進行計算
    var = expr        變數就是運算式的值
    var <op>= expr        相當于“var=var<op>expr”,例如”var -= expr” 等價于“var=var-expr”

    關系運算式
    關系運算式是一種特殊的運算式,計算結果總是0或1。如果關系為真,則計算為1;如果關系為假,則結果是0.。這些運算式可能出現在任何合法運算式中。(POSIX bc要求關系運算式僅用于if、while和陳述句,并且只能在其中進行一次關系測驗。)
    expr1 < expr2
    expr1 <= expr2
    expr1 > expr2
    expr1 >= expr2
    expr1 == expr2
    expr1 != expr2
    expr1 && expr2
    expr1 || expr2
    !expr


     運算子的優先級如下,從上到下依次增加:
    ||
        左結合
    &&
        左結合
    !
        不結合
    關系運算子
        左結合
    賦值運算子
        右結合
    +和-
        左結合
    *、/、%
        左結合
    ^
        右結合
    一元運算子 -
        不結合
    ++和--
        不結合

    選擇此優先級是為了使符合POSIX的bc程式能夠正確運行。這將導致關系運算子和邏輯運算子在與賦值運算式一起使用時有一些不尋常的行為。例如下面的運算式:
a = 3<5
  大多數C程式員會假設這會將“3<5”(值1)的結果賦給變數“a”,這在bc中所做的是將值3賦給變數“a”,然后比較3到5。在使用關系運算子和邏輯運算子與賦值運算子時,最好使用括號。
  在bc中還提供了一些特殊的運算式。這些運算式與用戶定義的函式和標準函式有關。它們都以“名稱(引數)”的形式出現。有幾個標準函式:
  1)length(expr),計算運算式結果的有效位數。
  2)read(),Read函式(一個擴展)將從標準輸入中讀取一個數字,而不管該函式發生在何處。注意,這可能會導致標準輸入中的資料和程式混合出現問題。這個函式的最佳使用是在一個已經撰寫好的程式中,這個程式需要用戶輸入,但絕不允許從用戶輸入程式代碼。讀函式的值是從標準輸入中讀取的數字,使用轉換基的變數ibase的當前值。
  3)scale ( expr ),這個函式的值是expr運算式中小數點之后的位數。
  4)sqrt ( expression ),函式的結果是運算式的開方值。

5、關于陳述句
     陳述句(在大多數代數語言中)提供運算式計算的順序。在bc中,陳述句被“盡快”執行。執行發生在遇到的換行符的時候,并且有一個或多個完整的陳述句。由于這種立即執行,換行符在bc中非常重要。事實上,分號和換行符都用作陳述句分隔符。如果換行符放置不當,將導致語法錯誤。因為換行符是陳述句分隔符,所以可以使用反斜杠字符隱藏換行符。(<nl>)在bc中顯示為空格而不是新行。陳述句串列是由分號和換行符分隔的一系列陳述句。
     1)運算式
     這條陳述句做兩件事之一。如果運算式以“<變數><賦值>.”開頭,則被認為是賦值陳述句。如果運算式不是賦值陳述句,則計算運算式并將運算式列印到輸出。在列印數字之后,將列印換行符。例如,“a=1”是一個賦值陳述句和“(a=1)”是一個具有內嵌賦值的運算式。輸出基obase的有效值是2~BC_BASE_MAX。對于基數2至16,通常采用書寫數字的方法。對于大于16的基數,bc使用多字符數字方法將每個較高的基數列印成以10為基數的資料。由于數字具有任意精度,一些數字可能無法在一條輸出線上列印。這些長數字將被分割,以“\”作為一行上的最后一個字符,每行列印的最大字符數為70個。由于bc的互動性,列印一個數字會導致最后將列印值賦值給特殊變數“last”的副作用。這允許用戶恢復列印的最后一個值,而不必重新鍵入列印數字的運算式。將last變數賦值為“最后一個值”是合法的,并將最后一個列印的值用指定的值覆寫。新賦值將保持不變,直到列印下一個數字或將另一個值分配給“last”為止。
     2)字串
  字串被列印到輸出。字串以雙引號開始,包含所有字符直到下一個雙引號字符。所有字符都是字面意思,包括任何換行符。字串后不列印換行符。
     3)列印串列
  print陳述句(擴展)提供了另一種輸出方法。“list”是由逗號分隔的字串和運算式的串列。每個字串或運算式都按串列的順序列印。不列印終止換行符。運算式的將被計算出值,最后將其值列印并分配給變數“last”。列印陳述句中的字串將列印到輸出中,并可能包含特殊字符。特殊字符以反斜杠字符“\”開始。bc識別的特殊字符是“a”(警報或鐘)、“b”(反斜杠)、“f”(表單提要)、“n”(換行符)、“r”(回車)、“q”(雙引號)、“t”(制表符)和“\”(反斜杠)。反斜杠后面的任何其他字符都將被忽略。
     4)陳述句串列
     這是復合陳述句。它允許將多個陳述句組合在一起執行。
     5)if (運算式)  statement 1  [else statement 2]
     if陳述句根據運算式的值決定執行statement 1或statement 2。如果運算式為非零,則執行statement 1。如果存在statement 2,且運算式的值為0的時候執行statement 2。
  6)while ( expression )  statement
     while陳述句將在運算式為非零時執行陳述句。它在每次執行陳述句之前計算運算式。回圈的終止是由零運算式值或break陳述句的執行引起的。
     7)for ( [expression1] ; [expression2] ; [expression3] )  statement
     for陳述句控制陳述句的重復執行。運算式1是在回圈之前計算的。運算式2是在每次陳述句執行之前計算的。如果運算式2為非零,則計算陳述句;如果為零,則終止回圈。每次執行陳述句后,計算運算式3。在重新計算運算式2之前,如果未找到運算式1或運算式3,則不會在計算值的點上對其進行任何計算。
     8)break
     break陳述句用來強制退出,通常用在for陳述句或者while陳述句中。
     9)continue
     continue陳述句用來結束本次回圈。
     10)halt
     halt陳述句會導致bc程式退出。
     11)return
     函式回傳0.
     12)return expr
     回傳運算式的值。
     13)偽陳述句,這些陳述句不會執行,他們在編譯的時候才會起作用。下面列出偽陳述句
           a)limits,列印由于bc版本而產生的限制
           b)quit,遇到quit指令的時候就會退出bc,無論它出現在什么地方。例如“if (0 == 1) quit”就會導致退出bc
           c)warranty,列印較長的授權通知
6、函式
      1)函式
      bc中的函式總是計算一個值并將其回傳給呼叫者。函式定義是“動態的”,在輸入中遇到定義之前,函式是未定義的。然后使用該定義,直到遇到相同名稱的另一個定義函式。然后,新定義取代舊的定義。函式定義方式如下:
           define name ( parameters ) { newline
            auto_list  statement_list }
函式的呼叫很簡單“name(parameters)”。
     2)引數
     引數是數字或陣列。在函式定義中,可以有0個或者多個引數,通過逗號分隔開。所有引數都是通過值引數呼叫的。陣列是通過符號“name[]在引數定義中指定的。在函式呼叫中,實參是數字引數的完整運算式。相同的符號。陣列的定義和傳值使用相同的符號。命名陣列通過值傳遞給函式。由于函式定義是動態的,因此在呼叫函式時會檢查引數號和型別。引數數量或型別的不匹配都會導致運行時錯誤。對未定義函式的呼叫也會出現運行時錯誤。
     3)auto_list
“auto_list”是供“本地”使用的變數的可選串列。auto_list的語法(如果存在)是“autoname,…;”。(分號是可選的。)每個名稱都是自動變數的名稱。陣列可以使用與引數相同的表示法來指定。這些變數的值在函式開始時被推入堆疊中。然后將變數初始化為零,并在函式的整個執行程序中使用。在函式退出時,這些變數被彈出,以便恢復這些變數的原始值(在函式呼叫時)。這些引數實際上是自動變數,它們被初始化為函式呼叫中提供的值。自動變數不同于傳統區域變數,因為如果函式A呼叫函式B,B可以使用相同的名稱訪問函式A的自動變數,除非函式B呼叫它們為自動變數。由于自動變數和引數被推到堆疊上,bc支持遞回函式。
     4)函式體
      函式體是一系列bc陳述句的串列。同樣,陳述句用分號或換行符分隔。回傳陳述句導致函式的終止和值的回傳。回傳陳述句有兩個版本。第一個形式“return”將值0回傳給呼叫運算式。第二種形式“return (運算式)”計算運算式的值并將該值回傳給呼叫運算式。在每個函式的末尾有一個隱含的“return (0)”。這允許一個函式終止并回傳0,而不需要顯式回傳陳述句。
      函式還會改變變數ibase的用法。函式體中的所有常量都將在函式呼叫時使用ibase的值進行轉換。在函式執行程序中,ibase的更改將被忽略,但標準函式讀取除外,后者將始終使用ibase的當前值來轉換數字。
     當前版本的bc,在函式中添加了幾個擴展。首先,定義的格式稍微放松了一些。標準要求開始大括號與定義關鍵字在同一行,所有其他部分必須在下面的行上。這個版本的bc將允許之前的任何數目的換行符。在函式的開頭支撐之后,例如,下面的定義是合法的:
    define  d  (n)  { return  (2*n); }
    define  d  (n)
            { return  (2*n); }
     5)void型別
  函式可以定義為void。空函式不回傳值,因此可能不會在任何需要值的地方使用。空函式在輸入行呼叫時不會產生任何輸出。關鍵字void放在關鍵字定義和函式名稱之間。例如,請考慮下面的例子
    define  py (y)  { print "--->", y, "<---", "0; }
    define  void  px (x)  { print "--->", x, "<---", "0; }
    py(1)
    --->1<---
    0                   //由于py不是void,因此有默認回傳值,因此這里列印了它的回傳值,
    px(1)
    --->1<---           //px是void型別,最后不會列印回傳值
此外,還為陣列添加了按變數呼叫。為了申明一個陣列變數,函式中的陣列引數是這樣定義的“*name[]” 。

7、數學庫

     1)如果使用“-l”選項呼叫bc,則預加載一個數學庫,并將默認精度設定為20。數學庫中有一下的函式:
  s(x),計算x的正弦值,x是弧度值。
  c(x),計算x的余弦值,x是弧度值。
  a(x),計算x的反正切值,回傳弧度。
  l(x),計算x的自然對數。
  e(x),e的x次方。
  j(n,x),從n到x的階數。
     2)例子
  下面的句子可以將“pi”的值賦值給shell變數pi
pi = $(echo  "scale=10; 4*a(1)"  |  bc  -l)
  下面的句子就是數學庫中e的次方定義方式
        scale = 20
        /* Uses the fact that e^x = (e^(x/2))^2
            When x is small enough, we use the series:
            e^x = 1 + x + x^2/2! + x^3/3! + ...
        */
        define e(x) {
            auto  a, d, e, f, i, m, v, z

            /* Check the sign of x. */
            if (x<0) {
                m = 1
                x = -x
            }

            /* Precondition x. */
            z = scale;
            scale = 4 + z + .44*x;
            while (x > 1) {
                f += 1;
                x /= 2;
            }

            /* Initialize the variables. */
            v = 1+x
            a = x
            d = 1
            for (i=2; 1; i++) {
                e = (a *= x) / (d *= i)
                if (e == 0) {
                    if (f>0) while (f--)  v = v*v;
                    scale = z
                    if (m) return (1/v);
                return (v/1);
                }
                v += e
            }
        }

     下面的陳述句實作一個計算支票簿余額的簡單程式
        scale=2
        print "\nCheck book program!\n"
        print "  Remember, deposits are negative transactions.\n"
        print "  Exit by a 0 transaction.\n\n"
        print "Initial balance? "; bal = read()
        bal /= 1
        print "\n"
        while (1) {
            "current balance = "; bal
            "transaction? "; trans = read()
            if (trans == 0) break;
            bal -= trans
            bal /= 1
        }
        quit

     下面的陳述句采用遞回的方式計算x的階乘
        define f (x) {
            if (x <= 1) return (1);
            return (f(x-1) * x);
        }

8、readline和libedit選項
     可以編譯GNU bc(通過一個配置選項)來使用GNU readline輸入編輯器庫或bsd libedit庫。這允許用戶在將行發送到bc之前進行編輯。它還允許保存以前鍵入的行的歷史記錄。當選擇此選項時,bc還有一個特殊變數。變數“history”是保留的歷史記錄行數。對于readline,值-1表示不限制歷史記錄的行數,0將禁用歷史記錄功能,默認值為100。

uj5u.com熱心網友回復:


9、差別
  這個版本的bc是從POSIX P 1003.2/D11草案中實作的,包含了與草案和傳統實作相比的一些區別和擴展,它不是以傳統的方式使bc(1)實作的,這個版本是一個決議和運行程式位元組代碼轉換的單一行程。這里有一個“無檔案”選項(-c),它導致程式將位元組碼輸出到標準輸出,而不是運行它。它主要用于除錯決議器和準備數學庫。差異的一個主要來源是擴展,下面列出一些差異和擴展:
     1)LANG環境變數,此版本在處理lang環境變數和從lc_開始的所有環境變數時不符合POSIX標準。
     2)名字,傳統和POSIX bc都有用于函式、變數和陣列的單字母名稱。它們被擴展為以字母開頭的多字符名稱,可以包含字母、數字和下劃線字符。
     3)字串,字串不允許包含NUL字符。POSIX表示所有字符都必須包含在字串中。
     4)last,POSIX bc中沒有last變數。
     5)比較,POSIX bc只允許在if陳述句、while陳述句和for陳述句的第二個運算式中進行比較。
     6)if陳述句,POSIX bc中if陳述句沒有else。
     7)for陳述句,POIX bc中要求for陳述句中的3個運算式都必須具備。
     8)&&,||,!,POSIX bc中沒有邏輯運算。
     9)read,POSIX bc沒有read功能。
     10)列印陳述句,POSIX bc沒有列印陳述句。
     11)continue陳述句,POSIX bc沒有continue陳述句。
     12)return,POSIX bc要求return的運算式加括號。
     13)陣列引數,POSIX bc不(目前)完全支持陣列引數。POSIX語法允許函式定義中的陣列,但沒有提供將陣列指定為實際引數的方法。(這很可能是語法上的疏忽。)傳統的bc實作只通過值陣列引數進行呼叫。
     14)函式,POSIX bc要求函式開頭的大括號和define關鍵字在同一行,陳述句在下一行。
     15)=+, =-, =*, =/, =%, =^。POSIX bc不要求定義這些“舊樣式”賦值運算子。此版本可能允許這些“舊樣式”賦值。使用限制陳述句查看安裝的版本是否支持它們。如果它確實支持“舊樣式”賦值運算子,則“a=-1”陳述句將使a減少1,而不是將a設定為值-1。
     16)數字中的空格,bc的其他實作允許數字空格。例如,“x=1 3”將值13賦值給變數x。相同的陳述句將導致bc版本中的語法錯誤。
     17)錯誤和執行,在程式中發現語法和其他錯誤時,此實作與其他實作的代碼不同。如果在函式定義中發現語法錯誤,則錯誤恢復機制將嘗試查找陳述句的開頭并繼續決議函式。一旦在函式中發現語法錯誤,該函式將不可呼叫并變為未定義。互動執行代碼中的語法錯誤將使當前執行塊失效。執行塊由在完整陳述句序列之后出現的行尾終止。例如
     a = 1
     b = 2
這個陳述句有兩個執行塊,而下面的陳述句
     {a = 1
     b = 2}
只有一個執行塊。任何運行時錯誤都會終止當前的執行塊,而警告則不會。
     18)中斷,在互動會話期間,SIGINT信號(通常由終端上的“ctrl+c“生成)將導致當前執行塊的執行中斷。它將顯示一個“運行時”錯誤,指示哪個功能被中斷。在所有運行時結構被清除后,將列印一條訊息通知用戶bc準備好接收更多的輸入。所有先前定義的函式都保留定義,所有非自動變數的值是中斷點的值。在清理程序中,所有自動變數和函式引數都會被移除。對于一個非互動式會話,SIGINT信號將終止bc的整個運行。

10、限制
     下面列出當前bc程式的一些限制,有一些限制可能已經被用戶修改過。
  1)BC_BASE_MAX,最大輸出基設定為999。最大輸入基為16。
  2)BC_DIM_MAX,這是當前分布的65535以內的任意限制,每個機器可能都不一樣。
  3)BC_SCALE_MAX,小數點前后的位數都由INT_MAX限制。
  4)BC_STRING_MAX,字串中的字符字數由INT_MAX限制。
  5)exponent,指數運算中的指數值由LONG_MAX限制。
  6)variable names,當前對每個簡單變數、陣列和函式名字的限制32767。

11、環境變數
     下面的環境變數由bc程式來控制
  1)POSIXLY_CORRECT,和“-s”選項一樣。
  2)BC_ENV_ARGS,這是另一種獲取bc引數的機制。格式與命令列引數相同。這些引數是先處理的,因此環境引數中列出的任何檔案在任何命令列引數檔案之前都會被處理。這允許用戶設定“標準”選項和檔案,以便在每次呼叫環境變數中的檔案通常包含用戶希望在每次運行bc時定義的函式定義。
  3)BC_LINE_LENGTH,這應該是一個整數,指定數字輸出行中的字符數。這包括用于長數字的反斜杠和換行符。,如果值是0,將禁用多行功能。此變數的任何其他值如果小于3,則將行長設定為70。

12、實體
     1)簡單計算
        [root@192 ~]# bc
        bc 1.06.95      //歡迎陳述句
        Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
        This is free software with ABSOLUTELY NO WARRANTY.
        For details type `warranty'. 
        12+23    //輸入加法運算式,回車
        35       //得到結果
        100/25   //輸入除法運算式,回車
        4         //得到結果
        quit     //退出指令
        [root@192 ~]# 
     2)執行for回圈陳述句
        for(i=0; i<3; i++){print "hello\n"}   //這是一個列印陳述句
        hello
        hello
        hello
     3)從檔案讀取內容并且執行bc

        [root@localhost /]# cat test.c  //查看檔案的內容,里面全是bc陳述句
        /*define 3 functions add,sub,mul*/
        define add(x,y){
          return x+y;
        }
        define sub(x,y){
          return x-y;
        }
        define mul(x,y){
          return x*y;
        }
        /*for statement*/
        for(i=0;i<3;i++){
          print "bc test ",i,"\n";
        }
        /*print statement*/
        print "10+5=",add(10,5),"\n"
        print "10-5=",sub(10,5),"\n"
        print "10&5=",mul(10,5),"\n"
        /*quit bc program*/
        quit
        [root@localhost /]# bc test.c  //bc程式從檔案獲取到代碼,然后執行
        bc 1.06.95
        Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
        This is free software with ABSOLUTELY NO WARRANTY.
        For details type `warranty'.
        bc test 0
        bc test 1
        bc test 2
        10+5=15
        10-5=5
        10&5=50

uj5u.com熱心網友回復:

cal
        cal指令可以顯示一個日歷資訊,如果沒有指定選項和引數,那么就會顯示當前的月份。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
        cal [-smjy13]  [[[day] month] year]  
2、選項串列
        -V
                顯示命令版本資訊
        -1
                顯示一個月的日歷資訊,這是默認值
        -3
                顯示上個月、這個月、下個月的日歷資訊
        -s
                將星期日作為第一天來顯示
        -m
                將星期一作為一周的第一天,默認星期日是第一天
        -j
                顯示儒略歷(顯示的是從1月1日起,到當前的天數)
        -y
                顯示當年的日歷資訊
       一個引數指定要顯示的年份(1-9999);請注意,必須指定完整的年份:“cal 89”將不顯示1989年的日歷。兩個引數表示月份(1-12)和年份。三個引數表示日期(1-31)、月份和年份,如果在終端上顯示日歷,則會突出顯示日期。如果沒有引數,則顯示當前月份的日歷。一年從1月1日開始。一周的第一天由地區決定。
3、實體
1)顯示儒略歷日歷
        [root@localhost ~]# cal –j      //這里顯示的不是“日”,而是一年的第幾天
                 九月2018         
        日  一  二  三  四  五  六
                        244
        245 246 247 248 249 250 251
        252 253 254 255 256 257 258
        259 260 261 262 263 264 265
        266 267 268 269 270 271 272
        273
        2)將“星期日”作為第一天顯示,顯示最近3個月
        [root@localhost ~]# cal -3 -s
              八月 2018                      九月2018                    十月 2018     
        日  一 二  三  四 五  六      日  一  二 三  四  五六    日 一 二  三  四 五 六
                    1  2  3   4                            1                1   2   3  4  5  6
        5  6  7   8  9  10 11           2   3   4  5   6  7  8      7  8   9  10 11 12 13
        12 13 14 15 16 17 18          9   10 11 12 13 14 15       14 15 16 17 18 19 20
        19 20 21 22 23 24 25      16  17 18 19 20 21 22      21 22 23 24 25 26 27
        26 27 28 29 30 31          23 24 25 26 27 28 29    28 29 30 31         
                                            30                                       
        [root@localhost ~]#
3)將星期一作為一個星期的第一天
        [root@localhost ~]# cal -m
              九月2018     
        一 二 三 四 五 六日
                        1  2
        3  4  5  6  7  8  9
        10 11 12 13 14 15 16
        17 18 19 20 21 22 23
        24 25 26 27 28 29 30

uj5u.com熱心網友回復:

支持樓主,get

uj5u.com熱心網友回復:

chkconfig
      啟動或者關閉系統服務,設定服務的運行級別,該指令并不會立刻啟動或者停止服務,而是在開機的時候發生效果。

      chkconfig提供了一個簡單的命令列工具,用于維護/etc/rc[0-6].d目錄層次結構,使系統管理員不必直接操作這些目錄中的許多符號鏈接。這個     chkconfig的實作受到IRIX作業系統中的chkconfig命令的啟發。但是,這個版本沒有在/etc/rc[0-6].d層次結構之外維護配置資訊,而是直接管理/etc/rc[0-6].d中的符號鏈接。這將留下所有有關在單個位置啟動服務init的配置資訊。

      chkconfig有五個不同的功能:添加用于管理的新服務、從管理中洗掉服務、列出服務的當前啟動資訊、更改服務的啟動資訊以及檢查特定服務的啟動狀態。

      當chkconfig后面只有一個服務名稱的時候,它會檢查服務是否配置為在當前運行級中啟動。如果是,則chkconfig回傳true;否則回傳false。“--level”選項可以用來使chkconfig查詢指定運行級下的服務狀態,而不是當前的運行級。當使用“--list”引數運行chkconfig或根本沒有引數時,將顯示所有服務及其當前配置的清單。

      如果在服務名稱之后指定了on、off、reset或resetpriorities之一,則chkconfig將更改指定服務的啟動資訊。on和off標志將分別導致服務在被更改的運行級別中啟動或停止。reset標志將服務的所有運行級別的on/off狀態重置為init腳本檔案中指定的樣子,重置的時候會有一個詢問。而resetpriorities標志則會直接將服務的on/off狀態重置為init腳本中指定樣子。默認情況下,on和off選項只影響運行級別2、3、4和5,而reset和resetpriorities影響所有運行級別。請注意,對于每個服務,每個運行級都有一個開始腳本或一個停止腳本。當切換runlevel時,init將不會重新啟動已經啟動的服務,也不會重新停止未運行的服務。

      chkconfig還可以通過xinetd.d組態檔管理xinetd腳本,xinetd服務只支持on、off、--list。

      chkconfig支持一個“--type”引數,當幾個服務共享名字的情況下,這個選項就有效。支持該選項的服務可以是sysv和xinetd。

      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      chkconfig [--list]  [--type type][name]
      chkconfig --add  name
      chkconfig --del  name
      chkconfig - -override  name
      chkconfig [--level levels]  [--type type]  name  
      chkconfig [--level levels]  [--type type]  name 
 
2、選項串列
      --help
            幫助資訊
      --version
            顯示命令版本資訊
      --list 服務名
            此選項列出chkconfig所知道的所有服務,以及它們是在每個運行級別中停止還是啟動。如果指定了名稱,則僅顯示有關服務名稱的資訊。
      --add 服務名
            增加服務。當添加新服務時,chkconfig確保服務在每個運行級別上都有一個啟動項或一個殺死項。如果任何運行級缺少這樣的條目,chkconfig將按照init腳本中的默認值創建適當的條目。請注意,“INIT INFO”部分中的默認條目優先于initscript中的默認運行級別;如果存在任何必需的啟動或要求停止條目,則將調整腳本的開始和停止優先級,以考慮這些依賴項。
      --del 服務名
            將服務從chkconfig管理中洗掉,與它相關的/etc/rc[0-6].d中的任何符號鏈接都被洗掉。
      --level [levels] [name] [on|off|reset]
            設定指定服務在指定運行級別的開機狀態,級別可以是0~6。例如: chkconfig –level 35 vsftpd on
      --override name
            如果/etc/chkconfig.d/name檔案現在存在,并且與基礎配置腳本不同,則更改服務名稱的組態檔,而不使用基礎配置。
 
3、關于運行級別
      每個應該由chkconfig管理的服務都需要在其init.d腳本中添加兩行或者多行注釋。第一行告訴chkconfig默認應該在什么運行級別啟動服務,以及啟動和停止優先級級別。如果服務在默認情況下不應該在任何運行級別中啟動,則應該使用“-”來代替runlevel串列。第二行包含服務的描述,并且可以通過反斜杠繼續擴展多行。例如random.init中有三行注釋
            # chkconfig: 2345 20 80
            # description: Saves and restores system entropy pool for \
            # higher quality random number generation.
這意味著隨機腳本應該在級別2、3、4和5中啟動,它的開始優先級應該是20,它的停止優先級應該是80。
 
      chkconfig還支持從左到右的“-”分隔符,并將優先于可用的“chkconfig:”行應用它們。例如下面的:
            ### BEGIN INIT INFO
            # Provides: foo
            # Required-Start: bar
            # Defalt-Start: 2 3 4 5
            # Default-Stop: 0 1 6
            # Description: Foo init script
            ### END INIT INFO
在這種情況下,“foo”的啟動優先級將被更改,它將高于“bar”啟動優先級。在添加依賴項時必須小心,因為它們可能導致許多腳本的啟動和停止優先級發生巨大變化。
 
4、實體
1)查看所有服務
      [root@localhost ~]# chkconfig --list
      NetworkManager    0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉
          …
      基于 xinetd 的服務:
          chargen-dgram:    關閉
          chargen-stream:   關閉
          …
2)查看指定服務
      [root@localhost ~]# chkconfig --list vsftpd
      vsftpd         0:關閉  1:關閉  2:關閉  3:關閉  4:關閉  5:啟用  6:關閉
3)設定ftp服務在3和5這兩個級別啟動
      [root@localhost ~]# chkconfig --level 35 vsftpd on    //級別3和5啟動
      [root@localhost ~]# chkconfig --list vsftpd             //查看是否設定成功
      vsftpd         0:關閉  1:關閉  2:關閉  3:啟用  4:關閉  5:啟用  6:關閉
 

uj5u.com熱心網友回復:

date
      以給定的格式顯示當前的日期,或者設定系統時間。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      date  [選項]。
      date  [+格式]。
      date  -u  [引數]
      引數格式[MMDDhhmm[[CC]YY][.ss]],分別對應(月、日、時、分、年前兩位、年后兩位、秒)

2、選項和格式串列
      --help
            幫助資訊
      --version
      顯示命令版本資訊
            -f | --file=DATEFILE
            和“--date”一樣,檔案的每一行都設定一次
      -d | --date=STRING
            顯示字串代表的時間,注意不是當前時間
      -r | --reference=FILE
            顯示檔案的最后修改時間
      -R | --frc-2822
            以rfc-2822的方式輸出日期和時間,
      --rfc-3339=TIMESPEC
            以rfc-3339的方式輸出日期和時間,精度可以是date、seconds、ns,日期和時間用一個空格隔開
      -s |  --set=STRING
            用指定字串設定時間
      -u |  --utc, --universal
            輸出或者設定通用時間

      格式
      %a
            當前locale 的星期名縮寫(例如: 日,代表星期日)
      %A
            當前locale 的星期名全稱 (如:星期日
      %b
            當前locale 的月名縮寫 (如:一,代表一月)
      %B
            當前locale 的月名全稱 (如:一月)
      %c
            當前locale 的日期和時間 (如:2005年3月3日 星期四 23:05:25)
      %C
            世紀;比如 %Y,通常為省略當前年份的后兩位數字(例如:20)
      %d
            按月計的日期(例如:01)
      %D
            按月計的日期;等于%m/%d/%y
      %e
            按月計的日期,添加空格,等于%_d
      %F
            完整日期格式,等價于 %Y-%m-%d
      %g
            ISO周數年的最后兩位數
      %G
            ISO周數年份
      %H
            小時(00-23)
      %I
            小時(00-12)
      %j
            按年計的日期(001-366)
      %k
            小時,00~23
      %l
            小時,1~12
      %m
            月份(01-12)
      %M
            分(00-59)
      %n
            新的一行
      %N
            十億分之一秒
      %p
            當前locale 下的”上午”或者”下午”,未知時輸出為空
      %P
            和“%p”一樣,但是輸出小寫字母
      %r
            當前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)
      %R
            24 小時時間的時和分,等價于 %H:%M
      %s
            從1970-01-01 00:00:00開始的秒數
      %S
            秒(00-60)
      %t
            tab字符
      %T
            時間,等于%H:%M:%S
      %u
            一個星期的一天,1是星期一。(1~7)
      %U
            一年中的第幾周,以周日為每星期第一天(00-53)
      %V
            ISO-8601 格式規范下的一年中第幾周,以周一為每星期第一天(01-53)
      %w
            一個星期的一天,0是周日. (0~6)
      %x
            當前locale 下的日期描述 (如:12/31/99)
      %X
            當前locale 下的時間描述 (如:23:13:48)
      %y
            年份最后兩位數位 (00-99)
      %Y
            年
      %z
            +hhmm格式的數字時區,例如“-0400
      %:z
            +hh:mm格式的數字時區,例如“-04:00
      %::z
            +hh:mm:ss格式的數字時區,例如“-04:00:00 “
      %:::z
            數字時區,使用“:”達到必要的精度,例如“-04, +05:30“
      %Z
            時區的縮寫,例如EDT

3、說明
      默認情況下,使用數字0來填補數字時間中的空缺。當然也可以指定其他方式:“%-“,不填補;”%_“,使用空格填補;”%0“,使用0;”%^“使用大寫字母;”%#“,使用相反的字母
      “--date=String“是一種自由格式,是一種方便讀取的日期字串,例如“Sun,2月29日16:21:42-0800”或“2004-02-29 16:21:42:42”,甚至是“下星期四”。日期字串可能包含指示日歷日期、時間、時區、周中日、相對時間、相對日期和數字的項。空字串表示一天的開始。日期字串可以包含指示日歷日期、時間、時區、星期數、相對時間、相對日期和數字的項。日期字串格式比這里容易記錄的要復雜,但是在info檔案中有完整的描述。

4、實體
1)不適用任何引數,直接顯示日期和時間
      [root@localhost ~]# date
      2018年 09月 05日 星期三 11:48:58 CST     //注意,這里顯示的是CST時間
2)顯示UTC時間
      [root@localhost ~]# date -u
      2018年 09月 05日 星期三 03:51:53 UTC
3)設定CST日期時間
      [root@localhost ~]# date -s 2018-9-4   //這里可以看到支持的日期格式。如果沒有設定時間,那么默認就是0點0分
      2018年 09月 04日 星期二 00:00:00 CST
      [root@localhost ~]# date -s 20180905
      2018年 09月 05日 星期三 00:00:00 CST
      [root@localhost ~]# date -s 2018/9/6
      2018年 09月 06日 星期四 00:00:00 CST
      [root@localhost ~]# date -s 11:56     //修改時間
      2018年 09月 05日 星期三 11:56:00 CST
      [root@localhost ~]# date -s 11:54:40
      2018年 09月 05日 星期三 11:54:40 CST
4)顯示當前是一年中的第幾周,第幾天 
      [root@localhost ~]# date +第%U周第%j天 
      第35周第248天
5)顯示12小時制度下的時間 
      [root@localhost ~]# date +%r
      下午 12時02分48秒
      [root@localhost ~]# date +%p%H:%M:%S     //這里可以使用多個格式組合,達到上面的效果
下午12:03:24
6)顯示當前日期 
      [root@localhost ~]# date +%x
      2018年09月05日
      [root@localhost ~]# date +%F
      2018-09-05
      [root@localhost ~]# date +%Y-%m-%d    //多格式拼接
      2018-09-05

uj5u.com熱心網友回復:

last
        顯示以前登錄過的用戶資訊,last指令會搜索/var/log/wtmp檔案(或者是經過-f選項指定的檔案),然后列出檔案中所有的用戶資訊。如果執行last指令時提示“last /var/log/wtmp∶ NO such file or directory”,則需要使用指令touch /var/log/wtmp手工創建此檔案 
        lastb指令用來顯示登錄失敗的用戶資訊,其用法和last一樣,對應的日志檔案是/var/log/btmp
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        last  [-R]  [-num]  [ -n num ]  [-adFiowx]  [ -f file ]  [ -t YYYYMMDDHHMMSS ]  [name...]  [tty...]
        lastb  [-R]  [-num]  [ -n num ] [ -f file ]  [-adFiowx]  [name...]  [tty...]

2、選項串列
        -f 檔案名
                指定登錄的日志檔案(默認是/var/log/wtmp)
        -num
                指定last顯示多少行資訊
        -n num
                和“-num”一樣
        -R 
                不顯示主機名字
        -a
                在最后一列顯示主機名
        -d
                將非本地登錄的用戶ip轉換成主機名
        -F
                顯示所有的登錄和注銷時間和日期
        -o
                讀取舊的日志檔案
        -w
                顯示用戶名和域名
        -x
                顯示系統關機資訊和運行級別的變化資訊
        -t [YYYYMMDDHHMMSS]
                顯示指定時間的登錄資訊
        [name]
                顯示指定用戶的登錄資訊
        [tty]
                顯示指定終端的登錄資訊,last tty1 = last 1

3、實體
1)顯示最近登錄的5條資訊
        [root@localhost ~]# last -5    //也可以使用last –n 5
        //登錄用戶  登錄終端   主機名            登錄時間             注銷時間  持續時間
        root     pts/0        :0.0             Tue Sep  4 13:10   still logged in   
        root     pts/0        :0.0             Wed Aug 22 15:07 - 13:09 (12+22:02)  
        root     pts/1        :0.0             Wed Aug 22 07:46 - 13:10 (13+05:23)  
        root     pts/0        :0.0             Wed Aug 22 07:43 - 11:02  (03:18)    
        root     tty1         :0               Wed Aug 22 07:20   still logged in    wtmp begins Wed Aug  8 18:02:52 2018
2)顯示用戶weijie和root在8月9號的登錄資訊
        [root@localhost ~]# last -t 20180809090000 weijie  //可以看到用戶weijie在8.9之前沒有登錄
        wtmp begins Wed Aug  8 18:02:52 2018

        [root@localhost ~]# last -t 20180809090000 root  //用戶root在8.9之前登錄過幾次
        root     pts/0        :0.0             Wed Aug  8 20:19 - down   (00:05)    
        root     tty1         :0               Wed Aug  8 20:19 - down   (00:06)    
        root     pts/1        :0.0             Wed Aug  8 18:16 - 20:16  (01:59)    
        root     pts/0        :0.0             Wed Aug  8 18:08 - 20:15  (02:06)    
        root     tty1         :0               Wed Aug  8 18:04 - 20:16  (02:11)    wtmp begins Wed Aug  8 18:02:52 2018
3)顯示終端tty1的登錄資訊
        [root@localhost ~]# last 1    //等同于last tty1
        root     tty1         :0               Wed Aug 22 07:20   still logged in   
        root     tty1         :0               Tue Aug 21 17:34 - down   (02:24)    
        …  
        wtmp begins Wed Aug  8 18:02:52 2018

uj5u.com熱心網友回復:

來支持樓主一下

uj5u.com熱心網友回復:

service
      service可以控制系統服務(打開、關閉、重啟)。service在盡可能可預測的環境中運行SystemV init腳本,洗掉大多數環境變數并將當前作業目錄設定為根目錄。腳本引數位于“/etc/init.d/script”中的System V init腳本。受支持的命令值取決于呼叫的腳本,服務將命令和選項傳遞給init腳本。
      所有腳本至少應該支持start命令和stop命令。作為特例,如果命令是“--full-restart”,腳本將運行兩次,首先使用stop命令,然后使用start命令。“service  --status-all”按照字母順序運行所有的init腳本,執行status命令。用戶可以在/etc/init.d/目錄下找到服務的腳本檔案。
      只有環境變數LANG和TERM傳遞給init腳本檔案。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      service SCRIPT COMMAND [OPTIONS]
      service --status-all
      service --help | -h | --version


2、選項串列
      -h | --help
            幫助資訊
      -V | --version
            顯示命令版本資訊
      --status-all
            顯示所有的服務狀態 
      --full-restart
            重啟服務,運行兩次,先停止后開啟
      [service_name  cmd]
            控制服務。例如service vsftpd start。cmd可以是start、stop、restart

3、實體
      1)查看所有服務當前的運行狀態
      [root@localhost ~]# service --status-all
      abrt-ccpp hook is installed
      abrtd (pid  2031) 正在運行...
      abrt-dump-oops 已停
      acpid (pid  1507) 正在運行..    
      …
      2)查看指定服務(vsftpd)的運行狀態
      [root@localhost ~]# service vsftpd status
      vsftpd (pid 30818) 正在運行...
      3)停止指定服務(vsftpd) 
      [root@localhost ~]# service vsftpd stop
      關閉 vsftpd:                                              [確定]
      [root@localhost ~]# service vsftpd status
      vsftpd 已停

uj5u.com熱心網友回復:

shutdown
      shutdown指令以安全的方式來關閉系統,所有已經登錄的用戶都會被告知系統將要關閉。并且在最后五分鐘內,新的登錄將被阻止。過了指定的time后,關機會向init(8)守護行程發送一個請求,以便將系統降至適當的運行級別。這是通過發出runlevel(7)事件來執行的,該事件包括RUNLEVEL環境變數中的新運行級以及PREVLEVEL變數中的前一個運行級(從環境或/var/run/utmp獲得)。可以設定一個額外的INIT_HART變數,它將包含使用halt指令關機的HAL值,或者使用power off指令關機的POWEROFF值。 
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      shutdown  [選項]  [時間]  [警告資訊]

2、選項串列
      -c
            取消正在執行的關機,這個選項沒有時間引數
      -h
            關閉計算機,等于halt或者power off
      -P
            等價power off
      -H
            等價halt
      -k
            只是發出警告資訊,注銷登錄,并沒有 關機 
      -r
            重啟,等于reboot
      時間
            now代表立刻關機; +m代表m分鐘后關閉; 23:00代表在晚上11點關機

3、說明
      如果設定為首選從/var/run/utmp讀取RUNLEVEL,關機將從此環境變數讀取當前運行級。“/var/run/utmp”檔案,讀取當前運行級的位置,該檔案還將使用新的運行級別進行更新。“/var/log/wtmp”檔案,新運行級記錄將追加到此檔案中。Upstart init(8)守護行程不跟蹤運行級別本身,而是完全由其用戶空間工具實作。

4、實體
1)5分鐘后關倍訓器,并發出警告“I am downing”
      [root@192 /]# shutdown -h +5 I am downing        //當前操作有root用戶發出,5分鐘后關機,并且有提示資訊
      Broadcast message from [email protected]
       (/dev/pts/1) at 10:40 ...
      The system is going down for halt in 5 minutes!     //5分鐘
      I am downing                                         //自定義的提示資訊
      [weijie@192 root]$                                  //當前控制臺是weijie用戶登錄,他也收到關機資訊
      Broadcast message from [email protected]
       (/dev/pts/1) at 10:40 ...
      The system is going down for halt in 5 minutes!
      I am downing 
2)取消關機
      [root@192 ~]# shutdown –c                        //需要打開另一個終端,輸入取消命令
      [root@192 /]# shutdown -h +5 I am downing     //在之前的關機命令視窗,最后可以看到取消的資訊
      …
      The system is going down for halt in 4 minutes!
      I am downing 
      shutdown: Shutdown cancelled        
      [root@192 /]# 

uj5u.com熱心網友回復:

yes
      反復的輸出指定的字串,直到手動停止。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      yes  [STRING]...
      yes  OPTION
      如果不指定字串,那么輸出字符“y”


2、選項串列
      --help
            幫助資訊,并且退出
      --version
            顯示命令版本資訊,并且退出

3、實體
1)輸出hello world
      [root@localhost ~]# yes hello world
      hello world
      hello world
      hello world
      hello world^C      //使用ctrl+c強制停止
      [weijie@192 root]$ 
2)輸出字符y
      [root@localhost ~]# yes          //沒有任何選項和引數,輸出字符y
      y
      y
      y
      y
      y
      ^C
      You have new mail in /var/spool/mail/root
      [root@localhost ~]# 

uj5u.com熱心網友回復:

支持樓主,繼續努力

uj5u.com熱心網友回復:

sudo
      sudo允許用戶以超級用戶或安全策略指定的另一個用戶的身份執行命令。Sudo支持安全策略插件和輸入/輸出日志的插件。第三方可以開發和分發自己的策略和I/O日志插件,以便與sudo前端無縫地作業。默認的安全策略是sudoers,它是通過檔案/etc/sudoers或通過LDAP配置的。

      安全策略確定用戶在需要什么權利的時候需要運行sudo。該策略可能要求用戶使用密碼或其他身份驗證機制進行身份驗證。如果需要身份驗證,如果用戶的密碼未在可配置的時限內輸入,sudo將退出。此限制是特定于策略的;sudoers安全策略的默認密碼提示超時為5分鐘。

      安全策略可能支持憑據快取,允許用戶在不需要身份驗證的情況下再次運行sudo。sudoers策略將憑據快取5分鐘,除非在sudoers(5)中重寫。通過使用“-v”選項運行sudo,用戶可以在不運行命令的情況下更新快取的憑據。

      安全策略可能記錄使用sudo的成功和失敗情況。如果配置了I/O插件,運行中的命令的輸入和輸出也可能被記錄下來。

      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      sudo -h | -K | -k | -V
      sudo -v  [-AknS]  [-g group name | #gid]  [-p prompt]  [-u user name | #uid]
      sudo -l[l] [-AknS]  [-g group name | #gid]  [-p prompt]  [-U user name] [-u user name | #uid]  [command]
      sudo [-AbEHnPS]  [-C fd]  [-g group name | #gid]  [-p prompt]  [-r role]  [-t type]  [-u user name | #uid]  [VAR=value]  -i |  -s [command]
      sudoedit [-AnS]  [-C fd]  [-g group name | #gid]  [-p prompt]  [-u user name | #uid]  file  ...
 
2、選項串列
      -h
       幫助資訊
      -V
            顯示命令版本資訊
      -A
            通常,如果sudo需要密碼,它就會從用戶終端讀取密碼。如果指定了-A(Askpass)選項,則執行一個(可能是Graphi cal)幫助程式來讀取用戶密碼并將密碼輸出到標準輸出。如果設定了SUDO_ASKPASS環境變數,則指定助手程式的路徑。否則,如果“/etc/sudo.conf”包含了askpass程式的路徑,將使用該值。例如:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
      -b
            在后臺運行命令。請注意,如果使用-b選項,則不能使用shell作業控制元件操作行程。大多數互動命令在后臺模式下都無法正常作業。
      -C fd
            通常,sudo將關閉除標準輸入、標準輸出和標準錯誤之外的所有打開的檔案描述符。“-C”選項允許用戶在標準錯誤(檔案描述符3)之上指定起點。不允許值小于3。安全策略可能限制用戶使用“-C”選項的能力。sudoers策略僅允許用戶只有在開啟“closefrom_override”之后,才可以使用“-C”選項
      -E
            運行時保留用戶環境。“-E”選項向安全策略指示用戶希望保存他們現有的環境變數。如果指定了“-E”選項,且用戶沒有保留環境的權限,則安全策略可能回傳錯誤
      -e
            編輯命令檔案,而不是執行命令。當查詢安全策略的時候,使用字串“sudoedit”代替命令。如果用戶通過策略認證,有3個步驟需要做:1)產生一個臨時的副本;2)運行策略指定的編輯器來編輯臨時檔案。sudoers策略依次使用環境變數SUDO_EDITOR,、VISUAL 、EDITOR。如果沒有設定這三個環境變數,則使用編輯器sudoers(5)選項中列出的第一個程式;3)如果修改了臨時檔案,則將臨時檔案復制回原來的位置,并移除臨時版本。
如果指定的檔案不存在,它將被創建。注意,與sudo運行的大多數命令不同,編輯器是在呼叫用戶的環境中運行的。如果由于某些原因,sudo無法用指定的編輯器更新檔案,則用戶將收到警告,編輯后的副本將保留在臨時檔案中。
      -g group 
            由指定的用戶組來執行命令。使用#gid,而不是組名。注意,shell要求使用反斜杠(‘\’)轉義‘#’
      -H
      -H(Home)
            選項要求安全策略將“HOME”環境變數設定為由密碼資料庫指定的目標用戶的家目錄。根據策略,這個選項很可能是默認的。
      -i [command]
            模擬初始登錄。“-i“選項將目標用戶的密碼資料庫條目指定的shell作為登錄shell運行。這意味著shell將讀取特定于登錄的資源檔案,如“.profile”或“.login”。如果指定了命令,則通過shell的-c選項將其傳遞給shell執行。如果未指定命令,則執行互動式shell。sudo試圖在運行shell之前更改到該用戶的家目錄。安全策略應將環境初始化為最小變數集,類似于用戶登錄時存在的變數集。
      -K
            洗掉用戶快取的憑據,不能與命令或其他選項一起使用。此選項不需要密碼。并非所有安全策略都支持憑據快取。
      -k [command]
            單獨使用時,sudo選項可以使用戶的快取憑據無效。下一次運行sudo時,將需要密碼。此選項不需要密碼,添加該選項是為了允許用戶從.logout檔案中撤消sudo權限。并非所有安全策略都支持憑據快取。
當與可能需要密碼的命令或選項一起使用時,“-k”選項將導致sudo忽略用戶的快取憑據。因此,sudo將提示輸入密碼(如果安全策略需要密碼),并且不會更新用戶快取的憑據。
      -l[l] [command]
            列出用戶能執行的命令。如果沒有指定命令,則-l(List)選項將列出當前主機上呼叫用戶(或-u選項指定的用戶)所允許的命令。如果指定了命令并得到安全策略的允許,則會顯示命令的完全路徑以及任何命令列引數。如果指定了命令但不允許執行,sudo將退出,狀態值為1。如果使用l引數(即-ll),則使用較長的串列格式。
      -n
            非互動式,將不提示用戶。-n選項防止sudo提示用戶輸入密碼。如果運行命令需要密碼,sudo將顯示錯誤訊息并退出。
      -P
            保存組向量。“-P“選項使sudo保持呼叫用戶的組向量不變。默認情況下,sudoers策略將組向量初始化為目標用戶所在的組串列。然而,實際有效的組ID仍然被設定為與目標用戶匹配。
      -p prompt
            使用指定的密碼提示陳述句:
            %H,擴展為主機名,包括域名;
            %h,擴展為主機名,不包括域名;
            %p,擴展為請求其密碼的用戶的名稱;
            %U,擴展到運行命令的用戶的登錄名;
            %u,擴展到呼叫用戶的登錄名;
            %%,兩個連續的‘%’字符折疊成一個‘%’字符;
      -r role
            “-r“選項將導致新的安全背景關系具有由role指定的角色。
      -S 
      從標準輸入讀取密碼,而不是終端獲取。密碼后面必須跟著換行符
      -s [command]
            如果設定了shell環境變數,則“-s“選項運行由shell環境變數指定的shell,或者運行密碼資料庫中指定的shell。如果指定了命令,則通過shell的”-c“選項將命令傳遞給shell執行。如果沒有指定命令,則執行互動式shell。
      -t type
            “-t“選項將導致新的安全背景關系的型別,如果沒有指定型別,則從指定的角色派生默認型別。
      -U user
            “-U”選項與“-l”選項一起使用,以列出指定用戶的權限。安全策略可能限制列出其他用戶的特權。sudoers策略只允許root或當前主機上具有完整特權的用戶使用此選項。
      -u user
            以指定的用戶身份執行指令。“-u“選項使sudo以root以外的用戶身份運行指定的命令。要指定#uid而不是用戶名。當以uid的形式運行命令時,許多shell要求用反斜杠‘\’轉義“#”。安全策略可能會將UID限制在密碼資料庫。sudoers策略允許不存在于密碼資料庫中的UID,只要沒有設定targetpw選項。其他安全策略可能不支持這一點。
      -v
            當給定-v(驗證)選項時,sudo將更新用戶的快取憑據,必要時對用戶密碼進行身份驗證。對于sudoers插件,這會將sudo超時再延長5分鐘(或安全策略設定的超時時間),但不會運行命令
      --
            這個選項提示,sudo應該停止處理命令列引數
 
      為命令設定的環境變數也可以var=value的形式傳遞到命令列,例如LD_Library_path=/usr/local/pkg/lib。傳遞到命令列的變數受與正常環境變數相同的限制,但有一個重要的例外。如果在sudoers中設定setenv選項,則要運行的命令具有SETENV標記集或匹配的命令。
 
3、執行命令
      當sudo執行命令時,安全策略指定命令的執行環境。通常,將實際有效的uid和gid設定為與密碼資料庫中指定的目標用戶相匹配,并根據組資料庫初始化組向量(除非指定了-p選項)。安全策略可能會指定一些引數:真實有效用戶ID、真實有效組ID、補充組ID、環境串列、當前作業目錄、檔案創建掩碼、SELinux的角色和型別、調度級別。
      1)行程模型
      當sudo運行一個命令時,它呼叫fork(2),設定上面描述的執行環境,并在子行程中呼叫execve系統呼叫。主sudo行程等待命令完成,然后將命令的退出狀態傳遞給安全策略的close方法并退出。如果配置了I/O日志插件,則將一個新的偽終端((“pty”)被創建,第二個sudo行程用于在用戶現有的pty和正在運行的新pty之間傳遞作業控制信號。這個額外的行程使掛起并恢復命令成為可能。如果沒有它,命令將使用POSIX術語中的“孤立行程組”。也不會收到任何作業控制信號
      2)信號處理
      因為命令是作為sudo行程的子行程運行的,所以sudo會將接收到的信號中繼到命令。除非該命令在新的pty中運行,否則SIGHUP、SIGINT和SIGQUIT信號將不會被中繼,除非它們是由用戶行程而不是內核發送的。否則,該命令將在用戶按下“ctrl+c”時接收到兩次SIGINT.信號。由于SIGSTOP和SIGKILL不能被捕獲,因此不會被中繼到命令。作為一般規則,當您希望掛起sudo運行的命令時,應該使用SIGTSTP而不是SIGSTOP。
      作為特例,sudo將不會中繼它正在運行的命令發送的信號。這可以防止命令意外地殺死自己。在某些系統上,reboot(8)命令在重新啟動系統之前將SIGTERM發送到所有非系統行程,而不是它自己。這防止sudo將接收到的SIGTERM信號中繼回reboot(8),然后該信號可能會在系統實際啟動之前退出,使其處于類似于單用戶模式的半死狀態。但是,請注意,此檢查只適用于sudo運行的命令,而不適用于命令可能創建的任何其他行程。因此,通過sudo運行呼叫重reboot(8)或shutdown(8)的腳本可能導致系統處于這種未定義狀態,除非使用exec()函式系列而不是system()運行reboot(8)或shutdown(8)(后者在命令和呼叫行程之間插入一個shell)。
 
4、插件
      插件根據“/etc/sudo.conf”檔案的內容動態加載。如果沒有“/etc/sudo.conf”檔案,或者它不包含插件行,sudo將使用傳統sudoers安全策略和I/O日志記錄,這相當于以下“/etc/sudo.conf”檔案
      #
      # Default /etc/sudo.conf file
      #
      # Format:
      #   Plugin plugin_name plugin_path plugin_options ...
      #   Path askpass /path/to/askpass
      #   Path noexec /path/to/sudo_noexec.so
      #   Debug sudo /var/log/sudo_debug all@warn
      #   Set disable_coredump true
      #
      # The plugin_path is relative to /usr/libexec unless
      #   fully qualified.
      # The plugin_name corresponds to a global symbol in the plugin
      #   that contains the plugin interface structure.
      # The plugin_options are optional.
      #
      Plugin policy_plugin sudoers.so
      Plugin io_plugin sudoers.so
      插件行由插件關鍵字組成,后面跟著符號名字和包含插件的共享物件的路徑。符號名字是插件共享物件中struct policy_plugin或struct io_plugin的名稱。路徑可以是完全限定的或相對的。如果不完全限定,則相對于“/usr/libexec”目錄。路徑之后的任何附加引數都是作為引數傳遞給插件的開放函式。不以Plugin、Path、
Debug、Set開頭的行將被默認忽略。
 
5、路徑
      路徑行由Path關鍵字組成,后面跟著要設定的路徑的名稱及其值。例:
      Path noexec /usr/libexec/sudo_noexec.so
      Path askpass /usr/X11R6/bin/ssh-askpass
 
      以下與插件無關的路徑可以在“/etc/sudo.conf”檔案中設定
      1)askpass,輔助程式的完全限定路徑,用于在沒有終端可用時讀取用戶的密碼。當sudo從圖形應用程式執行時,情況可能是這樣。由askpass指定的程式應該將傳遞給它的引數顯示為提示符,并將用戶的密碼寫入標準輸出。askpass可能被環境變數SUDO_ASKPASS覆寫。
      2)noexec,共享庫的完全限定路徑,包含僅回傳錯誤的execv()、execve()和fexecve()庫函式的虛擬版本,用于在支持LD_PRELOAD或其等效的系統上實作noexec功能。默認值為“/usr/libexec/sudo_noexec.so”。
 
6、除錯標志
      Sudo版本1.8.4及更高版本支持一種靈活的除錯框架,如果存在問題,可以幫助跟蹤sudo在內部做什么。
Debug行由Debug關鍵字組成,后面跟著要除錯的程式名稱(sudo、visudo、sudoreplay)、除錯檔案名和以逗號分隔的除錯標志串列。sudo和sudoers插件使用的除錯標志語法是subsystem@priority,但是插件可以自由使用不同的格式,只要它不包括逗號。例如陳述句“Debug sudo /var/log/sudo_debug all@warn,plugin@info”將會在警告級別和更高級別記錄插件子系統的所有除錯陳述句以及資訊級別的陳述句。
      目前,每個程式只支持一個除錯條目。sudo除錯條目由sudo前端、sudodit和plugins共享。將來的版本可能會增加對每個插件除錯行的支持和/或對單個程式的多個除錯檔案的支持。
      sudo前端使用的優先級依次為:crit、err、warn、notice、diag、info、trace、debug.。當指定每個優先級時,還包括所有高于此優先級的優先級。例如,通知的優先級將包括記錄在通知中的除錯訊息以及更高的優先級。
      sudo前端可以使用一下子系統:
      all 
            所有的子系統。
      args
            命令列引數行程。
      conv
            用戶回會話
      edit
      sudoedit。
      exec
            命令執行程序。
      main
      sudo的主函式。
      netif
            網路介面處理。
      pcomm
            插件會話
      plugin
      插件配置。
      pty
            為tty相關代碼。
      selinux
            SELinux專用處理。
      util
            實用函式。
      utmp 
            utmp處理

uj5u.com熱心網友回復:

 
7、退出值
      當程式成功執行時,sudo的退出狀態將只是被執行的程式的退出狀態。否則,如果存在配置/權限問題或sudo無法執行給定的命令,sudo將以1退出。在后一種情況下,錯誤字串將列印到標準錯誤。如果sudo無法在用戶路徑中呼叫stat函式統計一個或多個條目,則在stderr上列印錯誤。(如果該目錄不存在,或者它實際上不是一個目錄,則忽略該條目,并且不列印錯誤。)在正常情況下不應該發生這種情況。stat(2)回傳“拒絕權限”的最常見原因是,如果您正在運行一個自動偵聽器,并且您的路徑中的一個目錄位于當前無法訪問的計算機上。
 
8、安全說明
      當執行外部命令時,sudo試圖保持安全。為了防止命令欺騙,sudo在用戶路徑中搜索命令時,最后檢查“.”和““。但是請注意,實際的path環境變數沒有被修改,而是不改變地傳遞給sudo執行的程式。
      請注意,sudo通常只記錄它顯式運行的命令。如果用戶運行“sudo su“或”sudo sh“之類的命令,則從該shell運行的后續命令不受sudo的安全策略的約束,提供shell轉義的命令也是如此。如果啟用了I/O日志記錄,隨后的命令將有它們的輸入和輸出記錄,但這些命令不會有傳統的日志。因此,當用戶通過sudo訪問命令時,必須小心,以驗證該命令不會無意中給用戶一個有效的root shell。
      為了防止泄露潛在的敏感資訊,sudo在執行時默認禁用核心轉儲。為了幫助除錯sudo崩潰,您可能希望通過在“/etc/sudo.conf“檔案中將“disable_coredump”設定為false來重新啟用核心轉儲,如下所示
      Set disable_coredump false
      請注意,默認情況下,大多數作業系統從setuid程式(包括sudo)禁用核心轉儲。要實際獲得sudo核心檔案,您可能需要為setuid行程啟用核心轉儲。在BSD和Linux系統上,這是通過“sysctl“命令完成的,在Solaris上可以使用”coreadm“命令。
 
9、環境變數
      sudo使用一下環境變數,安全策略控制命令環境的實際內容。
      EDITOR
            如果沒有設定SUDO_EDITOR或VISUAL,則默認編輯器使用”-e”模式。
      MAIL
            在“-i“模式中或在sudoers中啟用env_reset時,將其設定為目標用戶的郵件線軸。
      HOME
            如果指定了“-i“或”-H“,在sudoers中賦值給目標用戶的home目錄,或者賦值給env_reset或all_set_home。或者當指定”-s“選項時,sudoers中賦值給set_home。
      PATH
            可能被安全策略覆寫
      SEHLL
            使用“-s“選項,執行運行的shell
      SUDO_ASKPASS
            如果沒有可用的終端,或者指定了“-A“選項,則指定用于讀取密碼的輔助程式的路徑。
      SUDO_COMMAND
            賦值給sudo運行的命令
      SUDO_EDITOR
            “-e“模式下的默認編輯器
      SUDO_GID
            賦值給呼叫sudo的用戶的組ID
      SUDO_PROMPT
            作為默認的密碼提示陳述句
      SUDO_PS1
            如果設定,PS1將被設定為正在運行的程式的值。
      SUDO_UID
            賦值給呼叫sudo的用戶的ID
      SUDO_USER
            賦值給呼叫sudo的用戶登錄名
      USER
            賦值給目標用戶(默認是root,除非指定“-u“選項)
      VISUAL
            如果在“-e“模式下沒有指定”SUDO_EDITOR“,那么這個就是默認編輯器
 
10、實體
1)查看當前用戶支持的指令
      [weijie@192 /]$ sudo –l       //當前用戶沒有權利執行任何sudo指令
      [sudo] password for weijie: 
      對不起,用戶 weijie 不能在 192 上運行 sudo。
      You have new mail in /var/spool/mail/root
 
      [root@192 /]# sudo –l       //當前用戶是root,因此可以執行所有的sudo指令
      匹配此主機上 root 的默認條目:
          requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
          DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
          PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
          LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
          LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
          LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
         secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
 
      用戶 root 可以在該主機上運行以下命令:
          (ALL) ALL
2)以指定的用戶身份來執行命令,不可以指定root
      [root@192 /]# sudo -u weijie ls /home/david/         //以用戶weijie的身份來查看用戶david的家目錄,很明顯是沒有權利的
      ls: 無法打開目錄/home/david/: 權限不夠
      [root@192 /]# sudo -u weijie ls /home/weijie/       //以用戶weijie的身份來查看用戶weijie的家目錄,這個當然可以
      1.zip  mail
      [root@192 /]# sudo  ls /home/david/                   //直接查看用戶david家目錄,由于當前在root環境下,因此完全可以
      mail
3)其他例子代碼
      $ sudo -u yaz ls ~yaz                               //查看用戶yaz的家目錄
      $ sudo -u www vi ~www/htdocs/index.html          //以用戶www的身份編輯檔案
      $ sudo -g adm view /var/log/syslog                //以組adm的身份去查看日志檔案,  
      $ sudo -u jim -g audio vi ~jim/sound.txt         //要使用不同的主組以Jim的身份運行編輯器
      $ sudo shutdown -r +15 "quick reboot"             //關機
      $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"   //若要對/home磁區中的目錄進行使用串列,請注意,這將在子shell中運行命令,以使cd和檔案重定向作業。

uj5u.com熱心網友回復:

mktemp
      創建臨時檔案或者目錄,這樣的創建方式是安全的。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
      mktemp  [選項]  [TEMPLATE]

2、選項串列
      --version
            顯示命令版本資訊
      --help
            顯示幫助資訊
      -d | --directory
            創建目錄
      -u | --dry-run
            不要創建任何東西,只要列印一個名字(不安全)
      -q | --quiet
            發生錯誤的時候不顯示提示資訊
      --suffix=SUFF
            附加SUFF到模板中。SUFF不能包含斜杠。如果模板不以X結尾,則使用此選項。
      --tmpdir[=dir]
            指定臨時檔案的路徑,如果tmpdir后面沒有路徑,那么使用變數$TMPDIR;如果這個變數也沒指定,那么臨時檔案創建在/tmp目錄下。使用此選項,模板不能是絕對名稱。與“-t“不同,模板可能包含斜杠,但mktemp只創建最終組件
      -p DIR
            使用DIR作為前綴
      -t
            將模板解釋為一個相對于目錄$TMPDIR(如果設定)的單個檔案名組件;否則通過-p指定的目錄;或者使用/tmp(-t已經棄用)
      TEMPLATE
            臨時檔案名,名字中必須包含至少3個字母X。如果沒有指定,那么默認是tmp. XXXXXXXXXX

3、實體
1)創建臨時檔案
      [root@localhost weijie]# mktemp wj123.XXXX       //名字包含4個X
      wj123.kpET
      You have new mail in /var/spool/mail/root
      [root@localhost weijie]# mktemp wj123.XXXXXX     //名字包含6個X
      wj123.oH2o4P
      [root@localhost weijie]# ls
      1.c  wj123.kpET  wj123.oH2o4P
2)創建臨時目錄
      [root@localhost weijie]# mktemp -d wjtp         //名字中沒有X
      mktemp: 模板"wjtp" 中X 太少
      [root@localhost weijie]# mktemp -d wjtpxxx      //名字中沒有X,這里可以看到X必須是大寫的
      mktemp: 模板"wjtpxxx" 中X 太少
      [root@localhost weijie]# mktemp -d wjtpXXX      //創建成功
      wjtpflR
       [root@localhost weijie]# ls -l
      總用量 4
      -rw-r--r-- 1 root root    0 9月   7 09:11 1.c
      -rw------- 1 root root    0 9月   7 14:47 wj123.kpET
      -rw------- 1 root root    0 9月   7 14:47 wj123.oH2o4P
      drwx------ 2 root root 4096 9月   7 14:50 wjtpflR
3)在/tmp中創建臨時檔案
      [root@localhost weijie]# mktemp --tmpdir wj234.XXX             //tmpdir沒有指定路徑,在tmp下創建
      /tmp/wj234.BNy
      You have new mail in /var/spool/mail/root
4)在指定目錄下創建臨時目錄
      [root@localhost weijie]# mktemp --tmpdir=/weijie wj234.XXX    //在tmpdir指定的路徑下創建
      /weijie/wj234.q1C
      [root@localhost weijie]# ls
      1.c  wj123.kpET  wj123.oH2o4P  wj234.q1C  wjtpflR
5)使用選項-u創建
      [root@localhost weijie]# mktemp -u wj123.XXXXXX         //使用-u選項
      wj123.dSgIKl
      [root@localhost weijie]# ls                                  //看不到臨時檔案,因為沒有創建
      1.c  wj123.kpET  wj123.oH2o4P  wj234.q1C  wjtpflR

uj5u.com熱心網友回復:

mkfs
在磁盤磁區上創建ext2、ext3、ext4、ms-dos、vfat檔案系統,默認情況下會創建ext2。mkfs用于在設備上構建Linux檔案系統,通常是硬碟磁區。檔案要么是設備名稱(例如/dev/hda1,/dev/sdb2),要么是包含檔案系統的常規檔案。成功回傳0,失敗回傳1。

實際上,mkfs只是Linux下可用的各種檔案系統構建器(mkfs.fstype)的前端,在可能/sbin、/sbin/fs、/sbin/fs.d、/etc/fs、/etc/fs等多個目錄中搜索特定于檔案系統的生成器(編譯時定義了精確的串列,但至少包含/sbin和/sbin/fs),最后在PATH環境變數中列出的目錄中搜索。

此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

 

1、語法
mkfs  [-V]  [-t fstype]  [fs-options]  filesys  [blocks]
 
2、選項串列
-V
顯示詳細執行程序
-t
指定檔案系統型別,默認ext2
fs-options
傳遞給真正的檔案系統構建器的特定選項。雖然沒有保證,但大多數檔案系統構建器都支持下列選項
-l filename
從指定檔案中讀取壞塊串列
-c
創建檔案系統之前進行壞道檢測
-v
顯示詳細執行程序
 
3、實體
創建ext2檔案系統
[root@localhost ~]# mknod /dev/sdb4 b 1 1      //創建一個設備
 
[root@localhost ~]# mke2fs /dev/sdb4
mke2fs 1.41.12 (17-May-2010)
檔案系統標簽=
作業系統:Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
4096 inodes, 16384 blocks
819 blocks (5.00%) reserved for the super user
第一個資料塊=1
Maximum filesystem blocks=16777216
2 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
    8193
正在寫入inode表: 完成                           
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
[root@localhost ~]# mount /dev/sdb4 /media/disk            //將檔案系統掛載
 
[root@localhost ~]# df –T      //查看已經使用的檔案系統
Filesystem                   Type    1K-blocks     Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4     25552764 13250844  11003900  55% /
tmpfs                        tmpfs      829656      268    829388   1% /dev/shm
/dev/sda1                    ext4       495844    32996    437248   8% /boot
/dev/sr0                     iso9660     56618    56618         0 100% /media/VBox_GAs_5.2.18
/dev/sdb1                    vfat        15863      140     14904   1% /media/disk
/dev/sdb4                    ext2        15863      140     14904   1% /media/disk            //可以看到這里是ext2型別的
    
 

uj5u.com熱心網友回復:

感謝樓主分享

uj5u.com熱心網友回復:

mke2fs
      在磁盤磁區上創建ext2、ext3、ext4檔案系統,默認情況下會創建ext2。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      mke2fs  [選項]  [設備]
      mke2fs  [ -c | -l filename ]  [ -b block-size ]  [ -f fragment-size ]  [ -g blocks-per-group ]  [ -G number-of-groups ]  [ -i bytes-per-inode ]  [ -I inode-size ]  [ -j ]  [-J  journal-options]  [ -K ]  [ -N number-of-inodes ] [ -n ]  [ -m reserved-blocks- percentage ]  [ -o creator-os ]  [ -O feature[,...]]  [ -q ]  [ -r  fs-revision-level]  [ -E  extended-options]  [ -v ]  [ -F ]  [ -L volume-label ]  [ -M last-mounted-directory ] [ -S ]  [ -t fs-type ]  [ -T usage-type ]  [ -U UUID ]  [ -V ]  device  [ blocks-count ]
mke2fs  -O  journal_dev  [ -b block-size ]  [ -L volume-label ]  [ -n ]  [ -q ]  [ -v ]  external-journal  [ blocks-count ]

device是與設備相對應的特殊檔案(例如:g/dev/hdXX)。blocks-count是設備上的塊數。如果省略,mke2fs會自動組態檔系統的大小。如果呼叫為mkfs.ext3,則創建日記,好像指定了“-j”選項。新創建的檔案系統引數的默認值(如果沒有被下面列出的選項覆寫)由“/etc/mke2fs.conf”組態檔控制。

2、選項串列
      -V
            顯示命令版本資訊
      -b block-size
            指定檔案系統上塊的大小(kb),有效值1024、2048、4096。如果省略,塊大小將由檔案系統大小和檔案系統的預期使用量(請參閱-T選項)來決定。如果塊大小為負值,則mke2fs將使用啟發式方法來確定適當的塊大小,同時限制塊大小至少為block-size位元組。這對于某些硬體設備非常有用(這些硬體設備要求塊大小為2k的倍數)。
      -c
            壞道檢測。如果該選項被指定兩次,則使用較慢的讀寫測驗,而不是快速只讀測驗。
      -E extended-options
            為檔案系統設定擴展選項。擴展選項是逗號分隔的,可以使用等號復制。在mke2fs的早期版本中,“-E”選項以前是“-R”。為了向后兼容,仍然接受“-R”選項。支持下面的擴展選項:
      1)stride=stride-size。使用stride-size個塊來配置RAID陣列,這是在移動到下一個磁盤之前讀取或寫入磁盤的塊數,有時被稱為塊大小。這主      要影響檔案系統元資料在mke2fs時的存放位置,以避免將它們放置在單個磁盤上,這可能會影響性能。塊分配程式也可能使用它。
      2)stripe-width=stripe-width。使用stripe-width個塊來配置RAID陣列,這通常是stride-size *n,其中N是RAID中包含資料磁盤的數目(例如,對于RAID 5,有一個奇偶校驗磁盤,所以N將是陣列中磁盤數量減去1),這允許塊分配器在寫入資料時防止修改RAID中的奇偶。
      3)resize=max-online-resize。預留足夠的空間,以便塊組描述符能夠增長以支持具有在線調整塊大小的檔案系統。
      4)lazy_itable_init[= <0 to disable, 1 to enable>]。如果使能了,并且也啟用了uninit_bg功能,那么inode表將不會被mke2fs完全初始化。這明顯加快了檔案系統的初始化速度,但它要求內核在檔案系統首次掛載時在后臺完成對檔案系統的初始化。如果省略了選項值,則默認為1以啟用延遲inode表初始化。
      5)test_fs。在檔案系統超級塊中設定一個標志,指示可以使用試驗性內核代碼(如ext4dev檔案系統)掛載它。
      6)discard。嘗試在mkfs時丟棄塊(在固態設備和稀疏/稀疏的Provi-Sied存盤中丟棄塊是有用的)。當設備宣傳丟棄資料時,將所有尚未歸零的inode表標記為零。這大大加快了檔案系統初始化的速度。此設定為默認設定。
      7)nodiscard。在mkfs時不會丟棄塊。
      -f fragment-size
            設定檔案系統碎片的大小。mke2fs接受“-f”選項,但目前忽略它,因為第二個擴展檔案系統還不支持片段
      -F
            強制mke2fs創建檔案系統,即使指定的設備不是塊特殊設備上的磁區,或者其他引數沒有意義。。由于這個指令很危險,因此必須確認兩次
      -g blocks-per-group
            指定塊組中的塊數。用戶通常沒有任何理由設定此引數,因為默認設定對檔案系統是最佳的。開發測驗用例的開發人員通常使用此選項。
      -G number-of-groups
            指定組的數量,這些組將被打包在一起用來創建更大的虛擬塊組。組數必須是2的冪,并且只能在啟用Flex_BG檔案系統功能時指定。
      -i bytes-per-inode
            mke2fs為磁盤上每一個inode位元組創建一個inode。bytes/inode比越大,創建的inode就越少。這個值一般不應該小于檔案系統的塊大小,因為在這種情況下,將產生比以往任何時候都多的inode。在文件系統創建后不可能擴展該檔案系統上的inode數,因此要小心確定此引數的正確值。
      -I inode-size
            指定每個inode的大小(以位元組為單位)。mke2fs默認創建256位元組的inode。在2.6.10之后的內核和一些早期的供應商內核中,可以使用大于128個位元組的inode存盤擴展屬性以提高性能。inode表將消耗,這將減少檔案系統中的可用空間,也會對性能產生負面影響。大型inode中存盤的擴展屬性在舊內核中是不可見的,這樣的檔案系統將根本無法用2.4內核掛載。在創建檔案系統之后,不可能更改此值。
      -j
            創建ext3檔案系統。如果沒有指定“-j”選項,則默認日志引數將用于創建存盤在檔案系統中的適當大小的日志
      -J journal-options
            使用命令列中指定的選項創建ext 3日志。選項是逗號分隔的,可以使用相等號對引數賦值。支持以下兩個引數,而且這兩個引數只能指定一個。
            size=journal-size。指定內部日志的大小,單位是MB。日志的大小必須至少為1024個檔案系統塊(如果使用1k塊,則為1MB,如果使用4k塊,則為4MB),并且可能不超過102,400個檔案系統塊。
            device=external-journal。將檔案系統附加到位于指定“external-journal“的日志塊設備上,“external-journal“必須已使用以下命令創建:mke2fs -O journal_dev external-journal。請注意,“external-journal“必須具有與新檔案系統相同的塊大小。此外,雖然支持將多個檔案系統附加到單個“external-journal“,但linux內核和e2fsck(8)目前還不支持共享“external-journal“。
-K
            保留,不要試圖在mkfs時丟棄塊
      -l filename
            從檔案中讀取磁盤壞塊資訊。注意,必須使用mke2fs使用的塊大小來生成壞塊串列中的塊號。因此,mke2fs的-c選項是一種簡單得多且不容易出錯的方法,用于在格式化磁盤之前檢查是否存在錯誤塊,因為mke2fs將自動將正確的引數傳遞給壞塊程式。
      -L new-volume-label
            設定檔案系統卷標,卷標最大16個位元組
      -m reserved-blocks-percentage
            指定為超級用戶保留的檔案系統塊的百分比。這樣可以避免碎片,并允許root有用的守護行程(如syzabd(8)在非特權行程被阻止寫入檔案系統后繼續正確運行。默認百分比為5%。
      -M last-mounted-directory
設定檔案系統最后的掛載目錄。一些實用程式可以從上一次掛載目錄中選擇鍵,以確定檔案系統應該安裝在何處。
      -n
            不創建檔案系統,而是演示創建檔案系統時該怎么做
      -N number-of-inodes
            重寫應為檔案系統保留的inode數量的默認值。
      -o creator-os
            重寫檔案系統的“creator operating system”欄位的默認值。默認情況下,creator欄位設定為mke2fs編譯出的作業系統的名稱。
      -O feature[,...]
            創建具有給定功能的檔案系統(檔案系統選項),覆寫默認的檔案系統選項。默認情況下啟用的特性由base_features關系指定,或者在/etc/mke2fs.conf組態檔中的[defaults]部分中指定,或者在-T選項指定的用法型別的[fs_type]子節中指定,并由檔案系統的[fs_types]子節中的特性關系進一步修改使用型別。
檔案系統特性集將使用此選項指定的特性集進行進一步編輯,或者如果未給出此選項,則由正在創建的檔案系統型別的default_features關系進行編輯,或者在組態檔的[defaults]部分中進行編輯。
檔案系統功能集由一系列要啟用的以逗號分隔的特性組成。要禁用一個功能,只需在特征名前加上插入符號(‘^’)。偽檔案系統功能“none”將清除所有檔案系統功能。feature可以是以下內容:
            1)dir_index。使用hashed b-trees來加快大目錄中的查找速度
            2)extent。使用間extent塊來存盤inode中資料塊的位置。這是一種更有效的編碼,它加快了檔案系統的訪問速度,特別是對于大型檔案。
            3)filetype。將檔案型別資訊存盤在目錄條目中。
            4)flex_bg。允許將每個塊組元資料(分配位圖和inode表)放置在存盤介質上的任何位置。此外,mke2fs將每個塊組元資料放在每個“flx_bg group”的第一個塊組中。可以使用-G選項指定flx_bg組的大小。
            5)has_journal。創建ext 3日志,和“-j”選項一樣。
            6)journal_dev。在給定設備上創建外部ext 3日志,而不是常規ext 2檔案系統。
            7)large_file。檔案系統可以包含大于2GB的檔案。(創建檔案>2GB時,現代內核會自動設定此特性。)
            8)resize_inode。保留空間,這樣塊組描述符表在將來可能會增長。對于使用regze2fs在線調整大小很有用。默認情況下,mke2fs將嘗試預留足夠的空間,以便檔案系統可以增長到其初始大小的1024倍。
            9)sparse_super。創建一個較少SuperBlock備份的檔案系統(在大型檔案系統上節省空間)。
            10)uninit_bg。在不初始化所有塊組的情況下創建一個檔案系統。這個特性還允許校驗和功能,以及每個塊組中highest-inode-used統計資訊。這個特性可以顯著加快檔案系統的創建時間(如果啟用了lazable_init),還可以大大減少e2fsck的時間。它只受最近Linux內核中的ext 4檔案系統的支持。
      -q
            靜默執行,通常用在腳本檔案中。
      -r revision
            為新的檔案系統設定檔案系統修訂號。
      -S
            只寫超級塊和組描述符。如果所有的超級塊和備份超級塊都損壞了,并且需要一種最后的恢復方法,這是很有用的。它導致mke2fs重新初始化超級塊和組描述符,同時不觸及inode表、塊和inode位圖。e2fsck程式應該在使用此選項后立即運行,并且無法保證任何資料都是可挽救的。使用此選項時指定正確的檔案系統塊大小至關重要,否則不可能恢復。
      -t fs-type
            指定檔案系統型別,默認ext2。此選項根據“/etc/mke2fs.conf(5)”中的fstypes配置節控制默認使用哪些檔案系統選項
如果使用“-O”選項顯式地添加或洗掉應該在新創建的檔案系統中設定的檔案系統選項,則所請求的fs-type可能不支持所產生的檔案系統。(例如,“mke2fs -t ext3 -O extents /dev/sdXX”將創建一個不受ext3實作支持的檔案系統。 “"mke2fs -t ext3 -O^has_journal /dev/hdXX”將創建一個沒有日志的檔案系統,因此Linux內核中的ext 3檔案系統代碼將不支持該檔案系統。)
      -T usage-type[,...]
            指定檔案系統的使用方式,以便mke2fs可以選擇最佳的檔案系統引數。所支持的usage-type在組態檔“/etc/mke2fs.conf(5)”中定義。用戶可以使用逗號分隔串列指定一個或多個usage-type。
      -U
            用指定UUID創建系統
      -v
            顯示詳細執行程序

3、實體
創建ext2檔案系統
      [root@localhost ~]# mknod /dev/sdb4 b 1 1      //創建一個設備

      [root@localhost ~]# mke2fs /dev/sdb4          //創建檔案系統,沒有指定型別,默認是ext2
      mke2fs 1.41.12 (17-May-2010)
      檔案系統標簽=
      作業系統:Linux
      塊大小=1024 (log=0)
      分塊大小=1024 (log=0)
      Stride=0 blocks, Stripe width=0 blocks
      4096 inodes, 16384 blocks
      819 blocks (5.00%) reserved for the super user
      第一個資料塊=1
      Maximum filesystem blocks=16777216
      2 block groups
      8192 blocks per group, 8192 fragments per group
      2048 inodes per group
      Superblock backups stored on blocks: 
       8193
      正在寫入inode表: 完成                            
      Writing superblocks and filesystem accounting information: 完成
      This filesystem will be automatically checked every 26 mounts or
      180 days, whichever comes first.  Use tune2fs -c or -i to override. 

      [root@localhost ~]# mount /dev/sdb4 /media/disk            //將檔案系統掛載

      [root@localhost ~]# df –T      //查看已經使用的檔案系統
      Filesystem                   Type    1K-blocks     Used Available Use% Mounted on
      /dev/mapper/VolGroup-lv_root ext4     25552764 13250844  11003900  55% /
      tmpfs                        tmpfs      829656      268    829388   1% /dev/shm
      /dev/sda1                    ext4       495844    32996    437248   8% /boot
      /dev/sr0                     iso9660     56618    56618         0 100% /media/VBox_GAs_5.2.18
      /dev/sdb1                    vfat        15863      140     14904   1% /media/disk
      /dev/sdb4                    ext2        15863      140     14904   1% /media/disk            //可以看到這里是ext2型別的 

uj5u.com熱心網友回復:

mknod
      創建塊設備或者字符設備檔案。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      mknod  [選項]  設備名  設備型別  主設備號  次設備號

2、選項引數串列
      --version
            顯示命令版本資訊
      --help
            顯示幫助資訊
      -m | --mode=MODE
            設定權限
      -Z |  --context=CTX
            設定SELinux的安全背景關系
            設備型別
            b,塊設備;c,字符設備;u,沒有緩沖的字符設備;p,fifo設備
            設備號
            只能是十進制和八進制,如果是0x開頭,那么還是十進制。對于b、c、u設備,必須給出設備號,對于p設備,必須忽略設備號
      
當型別為b、c或u時,必須同時指定主設備號和次設備號;當型別為p時,必須省略它們。如果主設備號或次設備號以0x或0x開頭,則解釋為十六進制;否則,如果以0開頭為八進制,其他為十進制。

3、實體
1)創建塊設備檔案
      [root@localhost ~]# mknod /dev/sdb4 b 1 1      //創建一個設備
      [root@localhost weijie]# ls -l /dev/sdb4 
      brw-r--r-- 1 root root 1, 1 9月   7 08:21 /dev/sdb4
2)創建字符設備檔案
      [root@localhost ~]# mknod /dev/ttywj c 2 1      //創建一個設備
      [root@localhost weijie]# ls -l /dev/ttywj 
      crw-r--r-- 1 root root 2, 1 9月   7 09:42 /dev/ttywj

uj5u.com熱心網友回復:

mkswap
        在Linux設備或者檔案中創建交換磁區,創建完成之后必須使用swapon來使用它。一般在“/etc/fstab”中有一個交換磁區串列,這樣開機的時候就可以使用它。
       此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        mkswap  [-c]  [-f]  [-p PSZ]  [-L label]  [-U uuid]  device  [size]
        引數device通常是一個磁盤磁區(類似于/dev/sdb7),但也可以是一個檔案。Linux內核不查看磁區ID,但是許多安裝腳本將假定十六進制型別82(Linux_SWAP)的磁區是交換磁區。(警告:Solaris也使用此型別。小心不要關閉Solaris磁區。)
        引數size是多余的,但為了向后兼容性而保留
        PSZ引數指定要使用的頁大小。指定它幾乎是不必要的(甚至是不明智的),但是某些舊的libc版本是關于頁面大小的,所以mkswap有可能弄錯了它。癥狀是后續Swapon失敗了,因為沒有找到交換簽名。PSZ的典型值為4096或8192。

2、選項串列
        -c
                創建交換磁區之前,檢測壞塊。如果有,那么列印出數量。
        -f
                強制執行。如果沒有此選項,mkswap將拒絕擦除帶有磁區表的設備上的第一個塊或整個磁盤上的第一個塊(例如/dec/sda)。
        -p
                設定頁大小,默認4096。一般是不需要指定這個引數的
        -L label
                指定一個label,方便swapon使用。只適用于新的風格交換區域
        -v1
                創建v1版本的swap磁區,2.5內核之后只支持這種的
        -U uuid
                指定uuid,默認情況會生成uuid

3、說明
        交換頭不觸及第一個塊。引導加載程式或磁盤標簽可以在那里,但不建議安裝。建議的設定是為Linux交換區域使用單獨的磁區。mkswap和許多其他類似mkfs的實用程式一樣,擦除了第一塊,這樣就可以洗掉磁盤上的舊系統。mkswap拒絕擦除帶有磁盤標簽的設備上的第一個塊,或者整個磁盤。
        交換區域的最大有用大小取決于體系結構和內核版本,在i386、PPC、m68k、ARM、sparc上為1 GiB、MIPS上為512 MiB、alpha上為128 GiB、sparc64上為3 TiB。對于2.3.3以后的內核來說,沒有這樣的限制。請注意,在2.1.117之前,內核為每個頁面分配了一個位元組,而現在它分配了兩個位元組,因此使用中的交換區域2 GIB可能需要2個MIB內核記憶體。
        目前,Linux允許32個交換區域(這是Linux2.4.10之前的8個)。使用中的區域可以在檔案“/proc/swaps”中看到(自2.1.25以來)。mkswap拒絕10頁以下的區域。如果您不知道您的機器使用的頁面大小,您可能可以使用“cat /proc/cpuinfo”查找它。
        若要設定交換檔案,必須在使用mkswap初始化該檔案之前創建該檔案,例如使用以下命令:
         # dd if=/dev/zero of=swapfile bs=1024 count=65536
        注意,交換檔案不能包含任何漏洞(因此,使用cp(1)創建該檔案是不可接受的)

4、實體
1)創建交換磁區,指定頁大小2048
        [root@localhost ~]# mkswap -p 2048 /dev/sdb4           //這里指定頁大小2048,取代了系統默認的4096
        Using user-specified page size 2048, instead of the system value 4096
        Setting up swapspace version 1, size = 16382 KiB
        no label, UUID=42f07b0e-0adb-47b6-a906-1209efabb981
2)創建交換磁區,指定頁大小4096,指定label
        [root@localhost ~]# mkswap -p 4096 -L wj /dev/sdb4    //筆者當前的系統,不能使用2048大小的頁
        Setting up swapspace version 1, size = 16380 KiB
        LABEL=wj, UUID=c458a15d-50ee-4e10-a49b-b59add4879d5
3)使用交換磁區
        [root@localhost ~]# swapon /dev/sdb4           //使用指定的磁區
        [root@localhost ~]# swapon –s                   //查看磁區使用情況
        Filename Type Size Used Priority
        /dev/dm-1              partition 2940920 0 -1
        /dev/sdb4              partition 16376 0 -2

uj5u.com熱心網友回復:

過來看看,支持

uj5u.com熱心網友回復:

mkisofs
    內容太多,參考https://blog.csdn.net/wj78080458/article/details/83549286

uj5u.com熱心網友回復:

dump
      檢查ext2/3/4檔案系統,確定哪些檔案需要備份,這些需要備份的檔案將會被復制到指定的磁盤或者其他存盤介質。dump檢查Ext 2/3/4檔案系統上的檔案,并確定哪些檔案需要備份。這些檔案被復制到給定的磁盤、磁帶或其他存盤介質中以確保安全保存(請參閱下面的-f選項以進行遠程備份)。大于輸出介質的轉儲被分解為多個卷。在大多數媒體上,大小是通過寫入來確定的,直到回傳媒體結束指示為止。
      在無法可靠地回傳媒體結束指示(例如一些盒式磁帶驅動器)的媒體上,每個卷都是固定大小的;實際大小是通過指定墨盒介質或通過下面的磁帶大小、密度和/或塊計數選項來確定的。默認情況下,在提示操作員更改媒體后,每個卷都使用相同的輸出檔案名。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      dump  [選項]  [-f 目標檔案]  源檔案
      dump  [-level#]  [-ackMnqSuv]  [-A file]  [-B records]  [-b blocksize]  [-d density]  [-D file]  [-e inode numbers]  [-E file]  [-f file]  [-F script]  [-h level]  [-I nr  errors]  [-jcompression  level]  [-L label]  [-Q file]  [-s feet]  [-T date]  [-y]  [-zcompression level]  files-to-dump
      dump  [-W | -w]
      files-to-dump要么是檔案系統的掛載點,要么是要作為檔案系統子集備份的檔案和目錄串列。在前一種情況下,可以使用安裝檔案系統的路徑或卸載檔案系統的設備。在后一種情況下,對備份設定了某些限制:-u是不允許的,唯一支持的轉儲級別是0,所有檔案和目錄都必須駐留在同一個檔案系統中。

2、選項串列
      -level#
            備份級別。如果是0,那么就備份整個檔案系統;如果大于0,那么就會備份相對于上一個更低級別備份的新檔案和修改過的檔案。默認是0。在子目錄中,只允許使用0級備份
      -a
            “自動尺寸”。繞過所有的磁帶長度計算,并寫入,直到媒體結束指示回傳。這是最適合大多數現代磁帶驅動器,這是默認的。當附加到現有磁帶或使用帶有硬體壓縮的磁帶驅動器時,特別推薦使用此選項(在這種情況下,您永遠無法確定壓縮比)。
      -A archive_file
            存檔指定檔案中的“內容轉儲表”,由RESTORE(8)使用,以確定檔案是否在正在恢復的轉儲檔案中。
      -b blocksize
            每個轉儲記錄的千位元組數。默認的塊大小為10,除非-d選項已用于指定6250 BPI或更高的磁帶密度,在這種情況下,默認的塊大小為32。但是請注意,由于IO系統將所有請求分割成塊MAXBSIZE(可低到64 KB),因此在使用更高的值時,可能會遇到轉儲(8)和恢復(8)的問題,這取決于內核和/或libC版本。
      -B records
            每卷1 kB塊的數目。通常不需要,因為轉儲可以檢測到媒體的結束.達到指定大小時,dump將等待您更改卷。此選項將重寫基于長度和密度的磁帶大小計算。如果壓縮限制了每個卷的壓縮輸出的大小。多個值可以作為一個由逗號分隔的引數給出。每個值將按所列順序用于一個轉儲卷;如果轉儲創建的卷比給定的值數多,則其余卷將使用最后一個值。這對于填充已經部分填充的媒體(然后在空媒體上繼續使用全尺寸卷)或混合不同大小的媒體非常有用。
      -c
            更改默認使用的磁帶驅動器,密度為8000 BPI,長度為1700英尺。指定墨盒驅動器將覆寫媒體端檢測。
      -d density
            設定磁帶密度。默認為1600 BPI。指定磁帶密度將覆寫媒體端檢測。
      -D file
            設定檔案的路徑名,該檔案存盤有關前一個完整轉儲和增量轉儲的資訊。默認位置是/etc/dumpdate
      -e inodes
            不包含指定的inodes。inodes引數是一個逗號分隔的inode編號串列
      -E file
            從文本檔案中讀取備份時要排除的inode串列。該檔案應該是一個普通檔案,其中包含由換行符分隔的inode編號。
      -f filename
            將備份寫入檔案;檔案可能是一個特殊的設備檔案,如/dev/st0(atAPE驅動器)、/dev/rsd1c(軟盤驅動器)、普通檔案或-(標準輸出)。多個檔案名可以作為一個由逗號分隔的引數。每個檔案將按所列順序用于一個轉儲卷;如果轉儲所需的卷數量超過給定的名稱數,則在提示進行媒體更改后,最后一個檔案名將用于所有剩余卷。如果檔案的名稱為“host:file”或“user@host:file”,dump寫入遠程主機上的命名檔案(應該已經存在,那么轉儲不會使用RMT(8)創建新的遠程檔案)。遠程RMT(8)程式的默認路徑名是“/etc/rmt”;這可以被環境變數RMT覆寫
      -F script
            在每個磁帶的末尾運行腳本(最后一個除外)。設備名稱和當前卷號將在命令列上傳遞。如果轉儲應該繼續而不要求用戶更改磁帶,則腳本必須回傳0;如果轉儲應該繼續,則回傳0。更改磁帶。任何其他退出代碼都會導致轉儲中止。出于安全考慮,轉儲在運行腳本之前回傳到實際用戶ID和真實組ID。
      -h level
            只對給定級別或以上的轉儲授予用戶節點標志UF_NODUMP。默認榮譽級別為1,因此增量備份省略了這些檔案,但完整備份保留了這些檔案。當給定的備份級別大于這個-h指定的級別時,那么就不備份標志為“UF_NODUMP”的檔案。
      -I nr_errors
            默認情況下,在請求運算子干預之前,轉儲將忽略檔案系統上的前32次讀取錯誤。可以使用此標志將其更改為任意值。當在活動檔案系統上運行轉儲時,這是非常有用的,因為讀取錯誤只是表示映射和轉儲傳遞之間的不一致。0,代表忽略所有的錯誤
      -jcompression_level
            使用bzlib庫壓縮要寫入磁帶上的每個塊。只有在將檔案或管道轉儲到檔案或管道時,或者在將磁帶驅動器轉儲到磁帶驅動器時,如果磁帶驅動器能夠寫入可變長度的塊,此選項才能作業。您至少需要0.4b24版本的還原才能提取壓縮磁帶。使用壓縮撰寫的磁帶將與BSD磁帶格式不兼容。(可選)引數指定bzlib將使用的壓縮級別。默認壓縮級別為2。如果指定了可選引數,則選項字母和引數之間不應該有空白。
      -k
            使用Kerberos身份驗證與遠程磁帶服務器對話。(只有在編譯轉儲時啟用此選項時才可用。)
      -L label
            用戶提供的文本字串標簽label被放置到轉儲頭中,在這里,像RESTORE(8)和FILE(8)這樣的工具可以訪問它。請注意,此標簽最多限于LBLSIZE(當前16)個字符,其中必須包括終止\0
      -m
            如果指定了此標志,dump將優化自上次轉儲以來已更改但未修改的inode的輸出(“已更改”和“修改”的含義在stat(2)中定義)。對于這些inode,dump將只保存元資料,而不是保存整個inode內容。此標志的使用必須是一致的,這意味著增量轉儲集中的每個轉儲都有該標志,或者沒有人擁有該標志。
            如果使用此選項,請注意,許多從檔案中解壓縮檔案的程式(例如tar、rpm、unzip、dpkg)可能會將檔案的mtime設定為過去的日期。如果修改后的mtime早于以前的級別轉儲,以這種方式安裝的檔案可能無法使用“dump-m”正確轉儲。使用這種“元資料”inode撰寫的磁帶將與bsd磁帶格式或較早版本的還原不兼容。
      -M
            啟用多卷功能.使用“-f”指定的名稱被視為前綴,并按順序寫入<prefix>001, <prefix>002等等。這在將檔案轉儲到Ext 2/3/4磁區上的檔案時非常有用,以繞過2GB檔案大小限制
      -n
            每當轉儲需要操作員注意時,以類似于wall(1)的方式通知組運算子中的所有運算子。
      -q
            每當需要操作員注意時,立即使dump中止,而無需提示寫入錯誤、磁帶更改等。
      -Q file
            啟用快速檔案訪問支持。每個inode的磁帶位置存盤在RESTORE使用的檔案中(如果用引數q和檔案名呼叫)直接將磁帶定位在當前正在進行的檔案恢復中。這將節省從大型備份恢復單個檔案的時間,保存磁帶和驅動器的磁頭。
            建議將st驅動程式設定為在呼叫帶引數的轉儲/還原之前回傳邏輯磁帶位置而不是物理磁帶位置。因為并非所有磁帶設備都支持物理磁帶位置,所以當st驅動程式設定為默認物理設定時,這些磁帶設備在轉儲/還原期間回傳一個錯誤。請參見st(4)手冊頁,選項MTSETDRVBUFFER。,或mt(1)手冊頁,介紹如何設定驅動程式回傳邏輯磁帶位置。在使用引數“-Q”呼叫RESTORE之前,始終確保st驅動程式設定為回傳呼叫轉儲程序中使用的相同型別的磁帶位置。否則,還原可能會被混淆。
此選項可在轉儲到本地磁帶(見上文)或本地檔案時使用。
      -s feet
            試圖計算在特定密度下所需的磁帶數量。如果超過此數量,則轉儲提示輸入新磁帶。建議在這個選項上有點保守。默認的磁帶長度是2300英尺。指定磁帶大小將覆寫媒體端檢測。
      -S
            大小估計。確定在沒有實際執行轉儲的情況下執行轉儲所需的空間數量,并顯示它將占用的估計位元組數。這對于增量轉儲非常有用,可以確定需要多少卷媒體。
      -T date
            指定備份的日期。使用指定的日期作為轉儲的開始時間,而不是從查看/etc/dumpdate中確定的時間。日期的格式與ctime(3)的格式相同,后面跟著rfc 822時區規范:一個正負號,后面跟著兩位數的小時數和兩位數的分鐘數。例如,格林威治以西8小時為0800小時,格林威治以東2小時半為0230小時。此時區設定考慮了夏時制時間(如果適用于時區):當夏時制時間生效時,UTC偏移量將與夏時制時間無效時的抵消值不同。為了向后兼容,如果沒有指定時區,則假定為本地時間。此選項對于希望在特定時間內轉儲的自動轉儲腳本非常有用。-T選項與-u選項相互排斥。
      -u
            備份完成后,在/etc/dumpdates中記錄備份的檔案系統、日期。人們可以閱讀/etc/dumpdate的格式,包括每行一個空閑的格式記錄:檔案系統名稱、增量級別和ctime(3)格式轉儲日期,后面是rfc 822時區規范(詳見-u選項)。如果未指定時區偏移量,則將時間解釋為本地時間。每當寫入檔案時,檔案中的所有日期都轉換為本地時區,而不更改UTC時間。每個檔案系統在每個級別上可能只有一個條目。如果需要,可以編輯/etc/dumpdate檔案以更改任何欄位。
      -v
            顯示詳細的資訊,幫助除錯錯誤
      -W
            顯示出最近的備份時間、層級,檢測需要備份的檔案。當W選項出現時,其他的選項都被忽略。轉儲告訴運算子哪些檔案系統需要轉儲。這個資訊是從檔案“/etc/dumpdate”和“/etc/fsman”收集的。-W選項會導致對”/etc/dumpdate”中的所有檔案系統和”/etc/mtab”中的所有檔案系統以及在”/etc/mtab”和”/etc/fstat”中識別的檔案系統列印出來。最近的轉儲日期和級別將突出顯示應該轉儲的檔案系統。
      -w
            類似于“-W”,但只在“/etc/mtab”和“/etc/fstat”中列印需要轉儲的可識別的檔案系統。
      -y
            使用lzo庫壓縮要寫入磁帶的每個塊。這不能像zlib庫那樣壓縮,但速度要快得多。只有在將檔案或管道轉儲到磁帶驅動器時,或者當磁帶驅動器能夠寫入可變長度的塊時,此選項才能作業。您至少需要0.4b34版本的還原才能提取壓縮磁帶。使用壓縮撰寫的磁帶將與bsd磁帶格式不兼容。
      -zcompression level
            使用zlib庫壓縮要寫入磁帶上的每個塊。此選項僅在將檔案或管道轉儲到檔案或管道時才能作業,或者在將磁帶驅動器轉儲到磁帶驅動器時,如果磁帶驅動器能夠寫入可變長度的塊,則此選項才能作業。您將需要至少0.4b22版本的恢復,以提取壓縮磁帶。使用壓縮撰寫的磁帶將與BSD磁帶格式不兼容。(可選)引數指定zlib將使用的壓縮級別。默認壓縮級別為2。如果指定了可選引數,則選項字母和引數之間不應該有空白。

3、說明
      dump需要操作員對以下條件進行干預:磁帶結束、轉儲結束、磁帶寫入錯誤、磁帶打開錯誤或磁盤讀取錯誤(如果存在nr錯誤的閾值以上)。除了通知-n鍵所暗示的所有運算子之外,在轉儲不能繼續時,或者在發生嚴重錯誤時,轉儲與轉儲控制終端上的運算子進行互動。所有的問題轉儲構成必須通過鍵入“是”或“否”,適當地回答。
      因為做一個dump需要花費大量的時間和精力,所以在每個磁帶卷的開頭都會轉儲檢查點。如果由于某種原因寫入該卷失敗,則在重新裝入和洗掉舊磁帶并安裝新磁帶之后,在操作員許可下,轉儲將從檢查點重新啟動。
      dump以周期性的間隔告訴運算子正在發生什么,包括通常對要寫入的塊數、所需磁帶的數量、完成時間和磁帶更改時間的低估計。輸出是冗長的,因此其他人知道終端控制轉儲是繁忙的,而且會持續一段時間。
      在發生災難性磁盤事件時,將所有必要的備份磁帶或檔案恢復到磁盤所需的時間可以通過錯位增量轉儲來保持在最低限度。一種將磁帶數量降到最小的增量式轉儲的有效方法如下:
      1)總是從0級備份開始,例如:“/sbin/dump -0u -f /dev/st0 /usr/src“。這應該每隔一段時間進行一次,比如每月一次或每兩個月一次,并在一套永久保存下來的新磁帶上進行。
      2)在級別0之后,每天都會對活動檔案系統進行轉儲,并使用此轉儲級別序列:” 3 2 5 4 7 6 9 8 9 9 ... “。
經過幾個月左右的時間,每天和每周的磁帶都應該從轉儲周期中輪換出來,新的磁帶應該被帶進來。

4、環境變數
      1)TAPE。如果沒有指定“-f“選項,dump將使用通過TAPE指定的設備作為轉儲設備。TAPE可以是磁帶名字、host:tapename、user@host:tapename。
      2)RMT。環境變數RMT將用于確定遠程rmt(8)程式的路徑名。
      3)RSH。dump使用此變數的內容來確定遠程備份時要使用的遠程shell命令的名稱(rsh、ssh等)。如果未設定此變數,則將使用rcmd(3),但只有root才能進行遠程備份。

5、檔案
      1)/dev/st0,要備份到的默認磁帶單元。
      2)/etc/dumpdates,dump的日期記錄。
      3)/etc/fstab,轉儲表:檔案系統和頻率
      4)/etc/mtab,轉儲表:掛載的檔案系統
      5)/etc/group,查找組運算子

6、退出碼
      成功時dump狀態為零。啟動錯誤用退出代碼1表示;例外終止用退出代碼3表示。
      當發生讀取錯誤時,轉儲輸出相應的物理磁盤塊和扇區號以及Ext 2/3/4邏輯塊號。它不列印相應的檔案名,甚至不列印inode編號。用戶必須使用除錯器(8),命令nCheck和icheck將由轉儲輸出的ext2blk數字轉換為inode號,然后轉換為檔案名。
      每個卷軸都需要一個新的行程,所以卷軸的父行程已經寫的只是掛在一起,直到寫了整個磁帶。如果壓縮為ON,則估計的磁帶數不正確。如果dump知道dump序列,就會很好,保持跟蹤的磁帶,告訴操作員要安裝什么磁帶,并為運行恢復的操作員提供更多的幫助。
      由于轉儲的安全歷史,它無法在不以root用戶身份運行的情況下進行遠程備份。目前,如果設定setuid(與以前一樣),它就能作業,但這可能會構成安全風險。請注意,可以將rsh設定為使用遠程shell程式。

7、bug
      這個版本的dump只能處理Ext 2/3/4檔案系統,這可能被認為是一個錯誤。具體來說,它不適用于FAT檔案系統。忽略檔案系統上少于32個讀取錯誤(用-i更改此錯誤)。如果注意讀取錯誤很重要,則可以決議轉儲的輸出,以查找包含文本“讀取錯誤”的行。

8、實體
備份目錄/weijie
      [root@localhost /]# dump -0f /bak/1.bak /weijie/      //備份到1.bak
        DUMP: Date of this level 0 dump: Fri Sep  7 09:26:15 2018
        DUMP: Dumping /dev/mapper/VolGroup-lv_root (/ (dir weijie)) to /bak/1.bak
        DUMP: Label: none
        DUMP: Writing 10 Kilobyte records
        DUMP: mapping (Pass I) [regular files]
        DUMP: mapping (Pass II) [directories]
        ...

      [root@localhost weijie]# file /bak/1.bak                //查看備份檔案
      /bak/1.bak: new-fs dump file (little endian), This dump Fri Sep  7 09:26:15 2018, Previous dump Thu Jan  1 08:00:00 1970, Volume 1, Level zero, type: tape header, Label none, Filesystem / (dir weijie), Device /dev/mapper/VolGroup-lv_root, Host localhost.localdomain, Flags 3

uj5u.com熱心網友回復:

強啊,大兄弟。

uj5u.com熱心網友回復:

ex2fsck
        檢查ext2、ext3、ext4檔案系統,如果系統已經掛載了,那么不建議去檢查,因為這樣是不安全的。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        e2fsck  [-pacnyrdfkvtDFV]  [-b  superblock]  [-B  blocksize]  [-l|-L bad_blocks_file ]  [-C fd]  [-j external-journal]  [-E extended_options ]  device
        設備是存盤檔案系統的設備檔案(例如/dev/hdc 1)。

2、選項串列
        -a | -p
                自動修復檔案系統
        -b superblock
                指定塊大小。不要使用普通的超級塊,而是使用由superblock指定的替代超級塊。此選項通常在主超級塊損壞時使用。備份超級塊的位置取決于檔案系統的塊大小。對于具有1k塊的檔案系統,可以使用備份超級塊。在塊8193處找到;對于具有2k塊的檔案系統,在塊16384處找到;對于4k塊在塊32768處找到。
                其他備份超級塊可以通過使用mke2fs程式使用-n選項列印出創建超級塊的位置來確定。mke2fs的-b選項必須指定檔案系統的塊大小,以便列印出準確的超級塊位置。
                如果指定了另一個超級塊,并且檔案系統不是只讀的,e2fsck將確保主超級塊在完成檔案系統檢查后得到適當更新。
        -B blocksize
                正常情況下,e2fsck將在不同塊大小下搜索超級塊,以試圖找到適當的塊大小。在某些情況下,此搜索可能會被愚弄。此選項迫使e2fsck只嘗試在特定塊大小上定位超級塊。如果找不到超級塊,e2fsck將以致命錯誤結束。
        -c
                此選項會導致e2fsck使用badblock(8)程式對設備執行只讀掃描,以查找任何壞塊。如果發現任何壞塊,則將它們添加到壞塊inode中,以防止將它們分配給檔案或目錄。如果指定了該選項兩次,則將使用無損讀寫測驗完成壞塊掃描。
        -C fd
                此選項導致e2fsck將完成資訊寫入指定的檔案描述符,以便監視檔案系統檢查的進度。運行e2fsck的程式通常使用此選項。如果檔案描述符號為負數,則將使用檔案描述符的絕對值,而進度資訊最初將被抑制。之后,可以通過向e2fsck行程發送SIGUSR 1信號來啟用它。如果指定的檔案描述符為0,e2fsck將在其業務進行時列印一個完成欄。這要求e2fsck在視頻控制臺或終端上運行。
        -d
                顯示除錯資訊 
        -D
                優化檔案系統中的目錄。此選項導致e2fsck嘗試優化所有目錄,如果檔案系統支持目錄索引,則通過重新索引這些目錄,或者對較小目錄的目錄進行排序和壓縮,或者使用傳統的線性目錄對檔案系統進行排序和壓縮。即使沒有-D選項,e2fsck有時也可能優化幾個方向。例如,如果啟用目錄索引,并且目錄沒有索引,或者索引結構被破壞并需要重建,則會受益。-D選項強制對檔案系統中的所有目錄進行優化。它們較小,搜索速度稍快,但實際上,您不需要使用此選項。-D選項將檢測單個目錄中具有重復名稱的目錄項,由于性能原因,e2fsck通常不強制執行。
        -E extended_options
                設定e2fsck擴展選項。擴展選項是逗號分隔的,可以使用等于(‘=’)號進行引數設定。
                ea_ver=extended_attribute_version,在檢查檔案系統時,設定e2fsck所需的擴展屬性塊的版本。版本號可能是1或2。默認的擴展屬性版本格式是2。
                fragcheck,在傳遞1期間,為檔案系統中的檔案列印任何不連續塊的詳細報告。
                discard,在進行完整的檔案系統檢查后,嘗試丟棄空閑塊和未使用的inode塊。
                nodiscard,不要試圖丟棄空閑塊和未使用的inode塊。這個選項與discard選項正好相反。此設定為默認設定。
        -f
                強制檢查
        -F
                在開始檢查之前,清慷訓沖區
        -I file
                指定檔案中的塊添加在損壞串列
        -j file
                設定檔案系統在日志檔案的路徑
        -k
                當與-c選項相結合時,壞塊串列中的任何現有壞塊將被保留,而通過運行badblocks (8)發現的任何新壞塊將被添加到現有的壞塊串列中。
        -l filename
                將檔案名指定的檔案中所列的塊號添加到壞塊的串列中。此檔案的格式與badblocks (8)程式生成的格式相同。請注意,塊號是基于檔案系統的塊大小。因此,對e2fsck使用-c選項更簡單、更安全,因為它將確保將正確的引數傳遞給badblock程式。
        -L filename
                將壞塊串列設定為檔案名指定的塊串列。(此選項與-l選項相同,除非在將檔案中列出的塊添加到壞塊串列之前清除壞塊串列。)
        -n
                打開檔案系統只讀,并假設對所有問題的答案為“no”。允許非互動地使用e2fsck。此選項不能與-p或-y選項同時指定。
        -p
                自動修復(“preen”)檔案系統。此選項將導致e2fsck自動修復任何不需要人工干預就能安全修復的檔案系統問題。如果e2fsck發現可能需要系統管理員采取額外糾正措施的問題,e2fsck將列印問題的描述,然后以代碼4退出。(請參閱退出代碼部分。)此選項通常由系統的引導腳本使用。它不能與-n或-y選項同時指定。
        -r
                不執行任何操作,提供向后的兼容性
        -S
                交換檔案系統的位元組順序
        -t
                列印e2fsck的時間統計資訊。如果使用此選項兩次,則附加的時間統計資訊將按傳遞方式列印。
        -v
                顯示執行的詳細程序
        -V
                顯示命令版本號,并且退出
        -y
                所有的互動回話都回答yes,此選項不能與-n或-p選項同時指定。

3、說明
        e2fsck用于檢查ext 2/ext 3/ext 4系列檔案系統。對于使用日志的ext 3和ext 4檔案系統,如果系統在沒有任何錯誤的情況下被不干凈地關閉,通常在日志中重播提交的事務之后,檔案系統應該標記為干凈。因此,對于使用日志的檔案系統,e2fsck通常會重播日志并退出,除非它的超級塊表明需要進一步檢查。
        請注意,通常在掛載的檔案系統上運行e2fsck是不安全的。唯一的例外是指定了-n選項,并且沒有指定-c、-l或-L選項。然而,即使這樣做是安全的,如果掛載了檔案系統,e2fsck列印的結果也是無效的。

4、回傳值

        e2fsck可以回傳以下值:
        0,沒有錯誤。
        1,檔案系統錯誤更正。
        2,檔案系統錯誤更正,系統應該重啟。
        4,檔案系統錯誤沒有更正。
        8,操作錯誤。
        16,語法錯誤。
        32,用戶取消了操作。
        128,共享庫錯誤

5、信號
        對e2fsck發送以下信號,并產生相應的結果:
        SIGUSR1,此信號導致e2fsck開始顯示完成欄或發出進度資訊。(見對-C選項的討論。)
        SIGUSR2,此信號導致e2fsck停止顯示完成欄或發出進度資訊。。

6、實體
以只讀的方式檢查sda1
        [root@localhost ~]# e2fsck  -n /dev/sda1
        e2fsck 1.41.12 (17-May-2010)
        Warning!  /dev/sda1 is mounted.             //檔案系統已經掛載,因此會有警告
        Warning: skipping journal recovery because doing a read-only filesystem check.      //以只讀的方式執行,不去修復
        /dev/sda1: clean, 39/128016 files, 49152/512000 blocks

uj5u.com熱心網友回復:

fsck
        檢查或者修復指定的檔案系統,可以是設備名、掛載點,還可以是一個ext2的label,或者是一個UUID。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        fsck  [選項]  –t  systype  device
        fsck  [-sAVRTMNP]  [-C [fd]]  [-t fstype]  [filesys...]  [--]  [fs-specific-options]

2、選項串列
        -s
                檢查的序列。如果有多個檔案系統需要檢查,那么按照順序來操作。注意:e2fsck(8)默認以互動模式運行。要使e2fsck(8)在非互動式模式下運行,必須指定-p或-a選項,如果希望自動更正錯誤,則必須指定-n選項。
        -t fslist
                指定要檢查的檔案系統的型別。當指定-A標志時,只檢查與fslist匹配的檔案系統。fslist引數是以逗號分隔的檔案系統和選項說明符串列。這個逗號分隔的串列中的所有檔案系統都可能以否定運算子“no”或“!”作為前綴,該運算子要求只檢查fslist中未列出的檔案系統。如果fslist中的所有檔案系統都不以否定運算子作為前綴,那么將只檢查fslist中列出的檔案系統。
選項說明符可能包含在逗號分隔的fslist中。它們必須具有“opts=s-option”的格式。如果存在選項說明符,那么只有在“/etc/fstat”的掛載選項欄位中包含                s-option的檔案系統才會被檢查。如果選項說明符以否定運算子為前綴,那么只有那些沒有fs-option的檔案系統才會被選中。在它們的掛載選項欄位“/etc/ffstab中”將被檢查。例如,如果“opts=ro”出現在fslist中,那么只會檢查“/etc/fstab”中列出的帶有ro選項的檔案系統。
為了兼容Mandrake發行版,它的引導腳本依賴于對fsck程式的未經授權的ui更改,如果在fslist中找到了一個檔案系統型別的回圈,就會將它視為將opts=loop指定為-t選項的引數。
                通常,檔案系統型別是通過在“/etc/fstab”檔案中搜索檔案并使用相應的條目來推斷的。如果無法推斷該型別,并且只有一個檔案系統作為-t選項的引數,fsck將使用指定的檔案系統型別。如果該型別不可用,則使用默認的檔案系統型別(當前Ext 2)。
        -A
                遍歷“/etc/fstab”檔案,并嘗試在一次運行中檢查所有檔案系統。此選項通常來自“/etc/rc”系統初始化檔案,而不是用于檢查單個檔案系統的多個命令。除非指定了-P選項(見下文),否則將首先檢查根檔案系統。之后,將按照“/etc/fstab”檔案中fs_passno(第六個)欄位指定的順序簽入檔案系統。跳過fs_passno值為0的檔案系統,將檢查fs_passno值大于零的檔案系統。如果有多個檔案系統具有相同的通行號,fsck將嘗試并行地檢查它們,盡管它將避免在同一個物理磁盤上運行多個檔案系統檢查。
fsck不與任何其他設備并行檢查堆疊設備。因此,在“/etc/fstab“檔案中非常常見的配置是將根檔案系統設定為fs_passno值為1,并將所有其他檔案系統設定為fs_passno值為2。如果由于某種原因需要避免多個檔案系統檢查并行運行,則選擇不使用此配置。例如,如果有問題的機器記憶體不足,因此過多的分頁會引起關注。
                fsck通常不會在呼叫檔案系統的檢查器之前檢查設備是否實際存在。因此,如果檔案系統特定的檢查器回傳致命錯誤,則不存在的設備可能導致系統在引導期間進入檔案系統修復模式。“/etc/fstab”掛載選項不會失敗,可以讓fsck跳過不存在的設備。fsck還跳過具有特殊檔案系統型別AUTO的不存在設備。
        -C [fs]
                顯示檢查的進度。顯示支持這些檔案系統檢查程式的完成/進度條(目前只用于ext 2和ext 3)。Fsck將管理檔案系統檢查器,以便它們中一次只顯示一個進度條。gui前端可以指定檔案描述符fd,在這種情況下,進度條資訊將發送到該檔案描述符。
        -M
                不要檢查已安裝的檔案系統,并回傳安裝檔案系統的退出代碼0。
        -N
                不執行檢查操作,只是演示一下 
        -P
                設定-A標志時,與其他檔案系統并行檢查根檔案系統。這不是世界上最安全的事情,因為如果根檔案系統懷疑e2fsck(8)可執行檔案可能被破壞了!這個選項主要是為那些不希望將根檔案系統重新劃分為小型和緊湊(這是真正正確的解決方案)的系統管理員提供的。
        -R
                當使用-a標志檢查所有檔案系統時,跳過根檔案系統
        -T
                啟動時不要顯示標題
        -V
                顯示執行程序
        fs-specific-options
                fsck不理解的選項被傳遞給特定于檔案系統的檢查器。這些引數不能使用引數,因為fsck無法正確猜測哪些引數可以選擇選項,哪些引數不能。后面的選項和引數被視為要傳遞給檔案系統特定檢查器的檔案系統特定選項。
                請注意,fsck的設計并不是為了將任意復雜的選項傳遞給特定于檔案系統的檢查器。如果您正在做一些復雜的事情,請直接執行特定于檔案系統的檢查程式。如果您傳遞fsck一些非常復雜的選項和引數,并且它沒有按照您的預期執行,那么就不要將它報告為bug。你幾乎肯定在做一些不該用fsck做的事。
                不同檔案系統特定fsck的選項沒有標準化。如果有疑問,請查閱檔案系統特定檢查器的手冊頁。雖然沒有保證,但大多數檔案系統檢查程式都支持下列選項
        -a
                自動修復檔案系統。請注意e2fsck(8)只支持向后兼容。此選項映射到e2fsck的-p選項,與某些檔案系統檢查器支持的-a選項不同,該選項是安全的。
        -n
                對于某些特定于檔案系統的檢查程式,-n選項將導致fs特定的fsck避免試圖修復任何問題,但只需將此類問題報告給stdout。然而,并不是所有特定于檔案系統的檢查程式都是如此。特別是,如果給定該選項,fsck.reiserfs(8)將不會報告任何損壞。fsck.minix(8)根本不支持-n選項。
        -r
                以互動方式修復檔案系統(請求確認)。注意:如果多個fsck并行運行,使用此選項通常是個壞主意。還請注意,這是e2fsck的默認行為;它僅出于向后兼容性的原因支持此選項。
        -y
                對于某些特定于檔案系統的檢查程式,-y選項將導致fs特定的fsck總是試圖自動修復任何檢測到的檔案系統損壞。有時專家可能能夠更好地手動驅動fsck。請注意,并非所有特定于檔案系統的檢查程式都實作了此選項。特別是fsck.minix(8)和fsck.lamfs(8)不支持-y選項。

3、說明
        如果命令列上沒有指定任何檔案系統,并且沒有指定-A選項,fsck將默認為串行地檢查/etc/fstat中的檔案系統。fsck指令可以有以下的回傳值:
        0,沒有錯誤。
        1,檔案系統錯誤更正。
        2,系統應該重啟。
        4,系統錯誤沒有更正。
        8,操作錯誤。
        16,語法錯誤。
        32,用戶取消fsck。
        128,共享庫錯誤。
        檢查多個檔案系統時回傳的退出代碼是所檢查的每個檔案系統的退出代碼的逐位OR。
        實際上,fsck只是linux下可用的各種檔案系統檢查器(fsck.fstype)的前端。檔案系統特定的檢查器首先在/sbin中搜索,然后在/etc/fs和/etc中搜索,最后在PATH環境變數中列出的目錄中搜索。

4、環境變數
        fsck的執行收到以下環境變數的影響:
        1)FSCK_FORCE_ALL_PARALLEL,如果設定了此環境變數,fsck將嘗試并行運行所有指定的檔案系統,而不管檔案系統是否位于同一設備上。(這對于RAID系統或高端存盤系統(如IBM或EMC等公司銷售的存盤系統)非常有用。)請注意,fs_passno值仍被使用。
        2)FSCK_MAX_INST,這個環境變數將限制一次運行的檔案系統檢查器的最大數量。這允許具有大量磁盤的配置避免fsck一次啟動過多的檔案系統檢查器,這可能會使系統上可用的CPU和記憶體資源超載。為零,則可以生成無限數量的行程。這是當前的默認情況,但未來版本的fsck可能會嘗試根據從作業系統收集會計資料自動確定可以運行多少個檔案系統檢查。
        3)PATH,PATH環境變數用于查找檔案系統檢查器,首先搜索一組系統目錄:/sbin、/sbin/fs.d、/sbin/fs、/etc/fs和/etc/fs,然后搜索路徑環境中的一組目錄。
        4)FSTAB_FILE,這個環境變數允許系統管理員覆寫/etc/fstab檔案的標準位置,對于正在測驗fsck的開發人員也很有用。

5、實體
檢查sdb4
         [root@localhost ~]# [root@localhost ~]# fsck -t swap /dev/sdb4
        fsck from util-linux-ng 2.17.2
        e2fsck 1.41.12 (17-May-2010)
        /dev/sdb4 was not cleanly unmounted, 強制檢查.
        Resize inode not valid.  重建<y>? 是

        第一步: 檢查inode,塊,和大小
        第二步: 檢查目錄結構
        第3步: 檢查目錄連接性
        Pass 4: Checking reference counts
        第5步: 檢查簇概要資訊
        Free 塊s count wrong for 簇 #0 (7854, counted=7855).
        處理<y>? 是

        Free 塊s count wrong (15722, counted=15723).
        處理<y>? 是

        /dev/sdb4: ***** 檔案系統已修改 *****
        /dev/sdb4: 11/4096 files (0.0% non-contiguous), 661/16384 blocks
        [root@localhost ~]# 

uj5u.com熱心網友回復:

學習了,謝謝分享

uj5u.com熱心網友回復:

swapon
      在指定的設備上啟用交換磁區,使用的設備或檔案由專用檔案引數提供。它可以是”-L label”或”-U UUID”,以指示一個設備的標簽或UUID。對swapon的呼叫通常發生在系統引導腳本中,使所有交換設備都可用,因此分頁和交換活動交叉在多個設備和檔案之間。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      swapon  -s  [-h]  [-V]
      swapon  [-f]  [-p priority]  [-v]  specialfile...
      swapon  -a  [-e]  [-f]  [-v]


2、選項串列
      -V | --version
            顯示版本資訊
      -h | --help
            顯示幫助檔案
      -v | --verbose
            執行的時候顯示詳細資訊
      -a | --all
            打開所有的交換磁區。除具有“noauto”選項的設備外,所有標記為“/etc/fstab”中“swap”的設備都是可用的。已經用作交換的設備將被悄悄跳過。
      -e | --ifexists
            跳過不存在的設備
      -f |  --fixpgsz
            如果交換空間的頁大小與當前運行的內核不匹配,則重新初始化(exec/sbin/mkswap)。mkswap(2)初始化整個設備,不檢查是否存在錯誤塊。
      -L label
            啟動指定label的交換磁區,為此,需要訪問/proc/磁區。
      -p
            設定優先權0~32767,數字越大,優先權越高。將“pri=value”添加到與“swapon -a”一起使用的“/etc/fstab”選項欄位中。
      -s | --summary
            按設備顯示交換用途摘要,等價于“cat /proc/swaps “
      -U uuid
            啟動指定uuid的交換磁區

3、說明
      您不應該在有漏洞的檔案上使用swapon。交換NFS可能無法作業。swapon會自動檢測并用舊的軟體掛起資料重寫交換空間簽名(例如S1SUSPEND,S2SUSPEND,.)。問題是,如果我們不這樣做,那么我們將在下一次嘗試取消掛起時資料損壞。

4、實體
1)啟動sdb4
      [root@localhost ~]# swap                 //創建交換磁區
      Setting up swapspace version 1, size = 16380 KiB
      LABEL=wj, UUID=aec14728-0f33-4676-8bef-612ea1bdf985
      [root@localhost ~]# swapon /dev/sdb4                        //啟用交換磁區
      [root@localhost ~]# swapon -s /dev/sdb4                    //查看資訊
      Filename Type Size Used Priority
      /dev/sdb4               partition 16376 0     -1
      [root@localhost ~]# 
2)以標簽的形式啟動
      [root@localhost ~]# blkid -c /dev/null                 //找到交換磁區的UUID
      /dev/sda1: UUID="059facc9-c58e-42d0-b8f5-7644c4574888" TYPE="ext4" 
      /dev/sda2: UUID="z3WRza-EIUl-dib9-7CGq-zRYt-DMdL-jT2ld9" TYPE="LVM2_member" 
      /dev/mapper/VolGroup-lv_root: UUID="9ad51e8e-3700-45a8-a195-531a95ff717d" TYPE="ext4" 
      /dev/mapper/VolGroup-lv_swap: UUID="2ebcaf57-3c6a-45be-8f34-3326d1fa1762" TYPE="swap"  
      [root@localhost ~]# free         //查看
                   total       used       free     shared    buffers     cached
      Mem:       1659316    1601620      57696          0     261664    1075780
      -/+ buffers/cache:     264176    1395140
      Swap:            0          0          0
      [root@localhost ~]# swapon -U 2ebcaf57-3c6a-45be-8f34-3326d1fa1762        //啟動交換磁區
      [root@localhost ~]# free            //查看
             total       used       free     shared    buffers     cached
      Mem:       1659316    1604132      55184          0     261684    1075780
      -/+ buffers/cache:     266668    1392648
      Swap:      2940920          0    2940920
      [root@localhost ~]#  

uj5u.com熱心網友回復:

還不錯,收藏,謝謝

uj5u.com熱心網友回復:

swapoff
      關閉交換磁區,同時可以重繪交換磁區的快取。關閉交換磁區后,使用free指令查看記憶體,swap數值會減少。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      swapoff  [-v]  specialfile...
      swapoff  -a  [-v]


2、選項串列
      -V | --version
            顯示版本資訊
      -h | --help
            顯示幫助檔案
      -v | --verbose
            執行的時候顯示詳細資訊
      -a | --all
            關閉所有的交換磁區

3、實體
關閉所有的交換磁區
      [root@localhost ~]# swapoff –a         //關閉所有交換磁區
      [root@localhost ~]# free                //查看記憶體使用狀態
                   total       used       free     shared    buffers     cached
      Mem:       1659316     678908     980408          0      85608     369308
      -/+ buffers/cache:     223992    1435324
      Swap:            0          0          0          //swap磁區不使用

uj5u.com熱心網友回復:

dumpe2fs
      顯示ext2、ext3、ext4檔案系統的超級快和塊組資訊。此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      dumpe2fs  [ -bfhixV ]  [ -o superblock=superblock ]  [ -o blocksize=blocksize ]  device

2、選項串列
      -b
            顯示檔案系統中保留的損壞塊
      -o superblock=superblock
            檢查檔案系統時,使用指定大小的超級塊。此選項通常不需要,除非檔案系統向導正在檢查嚴重損壞的檔案系統的剩余部分。
      -o blocksize=blocksize
            檢查檔案系統時,指定塊大小。此選項通常不需要,除非檔案系統向導正在檢查嚴重損壞的檔案系統的剩余部分。
      -f
            強制執行 
      -h
            只顯示超級塊資訊,而不顯示任何塊組描述符詳細資訊
      -i
            顯示從e2image獲得的檔案系統資訊,使用設備作為image檔案的路徑名。
      -x
            以十六進制顯示檔案系統資訊
      -V
            顯示命令版本資訊,并且退出

3、實體
顯示sdb4的組塊資訊
      [root@localhost ~]# dumpe2fs /dev/sdb4
      dumpe2fs 1.41.12 (17-May-2010)
      Filesystem volume name:   <none>
      Last mounted on:          <not available>
      Filesystem UUID:          e2a0cb30-f3ca-47de-92b8-780296960d93
      Filesystem magic number:  0xEF53
      Filesystem revision #:    1 (dynamic)
      。。。

      Group 0: (Blocks 1-8192)
        主 superblock at 1, Group descriptors at 2-2
        保留的GDT塊位于 3-65
        Block bitmap at 66 (+65), Inode bitmap at 67 (+66)
        Inode表位于 68-323 (+67)
        7855 free blocks, 2037 free inodes, 2 directories
        可用塊數: 338-8192
        可用inode數: 12-2048
      Group 1: (Blocks 8193-16383)
      。。。

uj5u.com熱心網友回復:

findfs
        查找指定卷標或者UUID的檔案系統對應的設備檔案。findfs將搜索系統中的磁盤,尋找具有標簽匹配標簽或與UUID相等的檔案系統。如果找到檔案系統,檔案系統的設備名稱將列印在stdout上。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        findfs  LABEL=label
        findfs  UUID=uuid

2、選項串列
        無

3、實體
1)查找指定UUID的檔案系統的設備
        [root@localhost ~]# findfs UUID=059facc9-c58e-42d0-b8f5-7644c4574888
        /dev/sda1
        You have new mail in /var/spool/mail/root
2)查找指定LABEL的檔案系統的設備 
        [root@localhost ~]# findfs LABEL=wj
        /dev/sdb4





volname
        顯示iso9660格式設備的卷標,一般情況下是CD-ROM。它還適用于包含iso-9660檔案系統的普通檔案。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
        volname  [device]

2、選項串列
        設備名
                要顯示卷標的設備,如果不指定,默認顯示/dev/cdrom的卷標q

3、實體
1)不指定設備,顯示默認設備的卷標 
        [root@localhost ~]# volname
        VBOXADDITIONS_5.2.18_124319  
2)顯示指定設備的卷標 
        [root@localhost ~]# volname /dev/sdb4         //這個設備不是iso9660,因此沒有結果
                                
        [root@localhost ~]# volname /weijie/my.iso  //這個設備是iso9660格式
        CDROM         





e2label
        修改ext2、ext3、ext4檔案系統的標簽,如果沒有指定標簽,那么會顯示當前的標簽。檔案系統標簽最長16個字符。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        e2label  device  [new-label]

2、選項串列
        device
        設備名稱
        label
        標簽名稱。不指定名稱,會顯示當前名稱。標簽名稱最多16個字符,超過16個字符將會被自動截斷

3、實體
指定sdb4的標簽
        [root@localhost ~]# e2label /dev/sdb4 hello     //指定標簽名字
        [root@localhost ~]# e2label /dev/sdb4            //顯示標簽名字
        hello
        [root@localhost ~]# 





sync
        將記憶體緩沖區的資料強制寫入到磁盤,通常Linux系統會將資料寫入到記憶體緩沖區,然后一次性將緩沖區的資料寫入到磁盤。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        sync [選項]

2、選項串列
        --version
                顯示版本資訊
        --help
                顯示幫助檔案

3、實體
        無

uj5u.com熱心網友回復:

如何查看服務器主板溫度?使用什么命令?

uj5u.com熱心網友回復:

tune2fs
        tune2fs允許系統管理員在Linux ext2、ext3或ext4檔案系統上調整各種可調的檔案系統引數。這些選項的當前值可以使用-l選項顯示,也可以通過使用dumpe2fs (8)程式顯示。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        tune2fs  [選項]  device
        tune2fs  [ -l ]  [ -c max-mount-counts ]  [ -e errors-behavior ]  [ -f ]  [ -i interval-between-checks ]  [ -j ]  [ -J journal-options ]  [ -m reserved-blocks-percentage ]  [-o  [^]mount-options[,...]  ]  [ -r reserved-blocks-count ]  [ -s sparse-super-flag ]  [ -u user ]  [ -g group ]  [ -C mount-count ]  [ -E extended-options ]  [  -L  volume-name  ]  [  -M  last-mounted-directory  ]  [ -O [^]feature[,...]  ]  [ -T time-last-checked ]  [ -U UUID ]  device

2、選項串列
        -l
                顯示設備的詳細資訊
        -c max-mount-counts
                檢查檔案系統之前,調整最大掛載次數。如果最大掛載計數為0或-1,e2fsck(8)和內核將忽略檔案系統的掛載次數。如果對強制檢查檔案系統的掛載計數,將避免在使用日志檔案系統時一次檢查所有檔案系統。
        -C mount-count
                設定檔案系統的掛載次數,如果設定為比-c選項設定的max-mount-counts引數更大的值,e2fsck(8)將在下次重新啟動時檢查檔案系統。
        -e error-behavior
                當檢測到錯誤時,更改內核代碼的行為。在任何情況下,檔案系統錯誤都會導致e2fsck(8)在下一次引導時檢查檔案系統。錯誤行為可以是下列行為之一:
                continue,繼續執行正常執行。
                remount-ro,重新以只讀的方式掛載。
                panic,產生kernel panic。
        -E extended-options
                為檔案系統設定擴展選項。擴展選項是逗號分隔的,可以使用相等號(‘=’)符號進行引數化。支持下列擴展選項:
                stride=stride-size,為RAID陣列配置具有步長檔案系統塊的檔案系統。這是在移動到下一個磁盤之前讀取或寫入磁盤的塊數。這主要影響檔案系統元資料(如位圖)在mke2fs(2)時間的放置,以避免將它們放置在單個磁盤上,這可能會損害性能。它也可以被塊分配器使用。
stripe_width=stripe-width,為RAID陣列組態檔系統,每條帶寬的檔案系統塊。這通常是stride-size *N,其中N是RAID中資料磁盤的數目(例如RAID 5 N+1,RAID 6 N+2)。這允許塊分配器在寫入資料時防止對RAID條中的奇偶性進行讀-修改-寫入(如果可能的話)。
hash_alg=hash-alg,設定用于具有散列b樹目錄的檔案系統的默認哈希演算法。接受的有效演算法有:legacy、half_md4和tea。
mount_opts=mount_option_string,設定一組默認的掛載選項,這些選項將在掛載檔案系統時使用。與使用-o選項指定的基于位掩碼的默認掛載選項不同,mount_option_string是最大長度為63位元組的任意字串,存盤在超級塊中。ext 4檔案系統驅動程式將首先應用基于位掩碼的默認選項,然后在決議從mount (8)程式傳遞的掛載選項之前決議mount_option_string。此超級塊設定僅在2.6.35以上內核中執行,而ext2和ext3檔案系統驅動程式則完全不執行。
                test_fs,在檔案系統超級塊中設定一個標志,指示可以使用試驗性內核代碼(如ext4dev檔案系統)掛載它。
                ^test_fs,清除test_fs標志,指示僅使用production-level檔案系統代碼掛載檔案系統。
        -f
                強制執行。當從具有外部日志的檔案系統(或損壞到似乎有外部日志)而外部日志不可用的檔案系統中洗掉Has_Journal檔案系統特性時,此選項非常有用。
        -g group
                設定可以使用保留檔案系統塊的組。group引數可以是數值gid或組名。如果給定組名,則在將其存盤在超級塊之前,將其轉換為數字gid。
        -i  interval-between-checks[d|m|w]
                調整兩個檔案系統檢查之間的最大時間。沒有后綴或d將數字間隔檢查解釋為天,m為月,w為周.值為零將禁用與時間相關的檢查。強烈建議啟用-c(mount-count-dependent)檢查或-i(time-dependent)檢查,以強制對檔案系統進行定期完整的e2fsck(8)檢查。如果不這樣做,可能會導致檔案系統損壞(由于磁盤、電纜、記憶體或內核錯誤)而忽略,最終導致資料丟失或損壞。
        -j
                向檔案系統添加ext3日志,如果沒有指定-J選項,則將使用默認日志引數來創建存盤在檔案系統中的適當大小的日志(給定檔案系統的大小)。請注意,您必須使用具有ext3支持的內核才能實際使用日志。
                如果此選項用于在已安裝的檔案系統上創建日志,則將在檔案系統的頂層目錄中創建一個不可變的檔案,即日志,因為它是在安裝檔案系統時創建日志inode的唯一安全方法。雖然ext 3日志是可見的,但在安裝檔案系統時洗掉它或修改它是不安全的;因此,檔案被標記為不可變。在檢查未掛載的檔案系統時,e2fsck(8)將自動將.Journal檔案移動到不可見的保留日志inode。對于除根檔案系統以外的所有檔案系統,這應該在下一個重新啟動周期中自動和自然地發生。由于根檔案系統是只讀安裝的,因此必須從救援軟盤上運行e2fsck(8)才能完成此轉換。
        -J journal-options
                重寫默認ext 3日志引數。日記選項是逗號分隔的,可以使用相等號(‘=’)符號進行引數化。支持下列日志選項:
                size=journal-size,創建一個存盤在檔案系統中的日志,大小journal-size。日志的大小必須至少為1024個檔案系統塊(如果使用1k塊,則為1MB;如果使用4k塊,則為4MB)。并且可能不超過102,400個檔案系統塊。檔案系統中必須有足夠的空閑空間來創建這樣大小的日志。
                device=external-journal,將檔案系統附加到位于外部日志上的日志塊設備上。外部日志必須已使用以下命令創建“mke2fs  -O  journal_dev  external-journal”。注意,外部日志必須與將要使用的檔案系統以相同的塊大小進行格式化。此外,雖然支持將多個檔案系統附加到單個外部日志,但Linux內核和e2fsck(8)目前還不支持共享外部日志。除了直接指定設備名稱之外,還可以通過LABEL=label或UUID=UUID指定外部日志,以便通過存盤在日志開頭的ext2超級塊中的卷標簽或UUID來定位外部日志。使用dupe2fs(8)顯示日志設備的卷標簽和UUID。
                size和device只能有一個。
        -L volume-label
                設定檔案系統卷標。ext2檔案系統標簽最多可以長達16個字符;如果卷標簽超過16個字符,tune2fs將截斷它并列印警告。卷標簽可由mount(8)、fsck(8)和/etc/fstab(5)(可能還有其他)使用,方法是指定LABEL=volume_label,而不是/dev/hda 5這樣的塊特殊設備名。
        -m  reserved-blocks-percentage
                設定只能由特權行程分配的檔案系統百分比。保留一些檔案系統塊以供特權行程使用是為了避免檔案系統碎片,并允許系統守護行程(如syAdd.1-d(8)在非特權行程被阻止寫入檔案系統之后繼續正確運行。通常,保留塊的默認百分比是5%。
        -M last-mounted-directory
                設定最后的掛載目錄
        -o [^]mount-option[,...]
                在檔案系統中設定或清除指定的默認掛載選項。默認的掛載選項可以被“/etc/fstab”(5)中指定的掛載選項覆寫,也可以在命令列引數上覆寫mount(8)。舊內核可能不支持此特性;特別是,在2.4.20之前的內核幾乎肯定會忽略超級塊中的默認掛載選項欄位。可以通過用逗號分隔功能來清除或設定多個掛載選項。以插入字符(‘^’)為前綴的掛載選項將在檔案系統的超級塊中清除;沒有前綴字符的掛載選項或以‘+’作為前綴的掛載選項將添加到檔案系統中。可以使用tune2fs設定或清除下列掛載選項:
                debug,bsdgroups,user_xattr,acl,uid16,journal_data,journal_data_ordered,journal_data_writeback,nobarrier,block_validity,discard,nodelalloc
        -O [^]feature[,...]
                設定或清除檔案系統中指定的檔案系統特性(選項)。多個檔案系統特性可以通過用逗號分隔特性來清除或設定。以插入字符(‘^’)為前綴的檔案系統特性將在檔案系統的超級塊中清除;沒有前綴字符或前綴為‘+’的檔案系統特性將添加到檔案系統中。可以使用tune2fs設定或清除下列檔案系統特性:dir_index,filetype,flex_bg,has_journal,large_file,resize_inode,sparse_super,uninit_bg。
        -r reserved-blocks-count
                設定保留檔案系統塊的數目
        -T time-last-checked
                使用e2fsck設定上次檢查檔案系統的時間。時間使用當前(本地)時區進行解釋。這在使用邏輯卷管理器對檔案系統進行一致快照的腳本中很有用,然后在空閑時間檢查檔案系統,以確保它沒有因為硬體問題而損壞,等等。如果檔案系統是干凈的,那么這個選項可以用來設定原始檔案系統上的最后一次檢查時間。最后一次檢查的格式是國際日期格式,有一個可選的時間說明符,即YYYYMMDD[HH[MM[SS]。關鍵字Now也被接受,在這種情況下,上一次檢查時間將設定為當前時間。
        -u user
                設定可以使用保留檔案系統塊的用戶。用戶可以是uid或用戶名。如果給定用戶名,則將其轉換為數字uid,然后將其存盤在超級塊中。
        -U UUID
                將檔案系統的通用唯一識別符號(UUID)設定UUID。UUID的格式是由連字符分隔的一系列十六進制數字,如“c1b9d5a2-f162-11cf-9ece-                0020afc76f16”。UUID引數也可能是以下內容之一:
                clear,清除UUID。
                random,產生一個隨機的UUID。
                time,產生一個基于時間的UUID。

3、實體
1)查看sdb4的詳細資訊 
        [root@localhost ~]# tune2fs -l /dev/sdb4
        tune2fs 1.41.12 (17-May-2010)
        Filesystem volume name:   hello
        Last mounted on:          <not available>
        Filesystem UUID:          e2a0cb30-f3ca-47de-92b8-780296960d93
        …
        First inode:              11
        Inode size:           128
        Default directory hash:   half_md4
        Directory Hash Seed:      4930bf0f-771e-4940-9255-bee40d138079
2)設定最大掛載次數 
        [root@localhost ~]# tune2fs -c 30 /dev/sdb4       //設定最大掛載次數
        tune2fs 1.41.12 (17-May-2010)
        Setting maximal mount count to 30
        You have new mail in /var/spool/mail/root
        [root@localhost ~]# tune2fs -l /dev/sdb4         //查看詳細資訊
        tune2fs 1.41.12 (17-May-2010)
        Filesystem volume name:   hello
        Maximum mount count:      30                         //最大掛載次數已經修改為30
        Directory Hash Seed:      4930bf0f-771e-4940-9255-bee40d138079
        [root@localhost ~]#       

uj5u.com熱心網友回復:

參考 41 樓 jona9595 的回復:
如何查看服務器主板溫度?使用什么命令?

可以使用lm-sensors工具包看看,必須先要安裝這個包

uj5u.com熱心網友回復:

resize2fs
      調整ext2\ext3\ext4檔案系統的大小,它可以放大或者縮小沒有掛載的檔案系統的大小。如果檔案系統已經掛載,它可以擴大檔案系統的大小,前提是內核支持在線調整大小。
      size引數指定所請求的檔案系統的新大小。如果沒有指定任何單元,那么size引數的單位應該是檔案系統的檔案系統塊大小。size引數可以由下列單位編號之一后綴:“s”、“K”、“M”或“G”,分別用于512位元組扇區、千位元組、兆位元組或千兆位元組。檔案系統的大小可能永遠不會大于磁區的大小。如果未指定Size引數,則它將默認為磁區的大小。
      resize2fs程式不操作磁區的大小。如果希望擴大檔案系統,必須首先確保可以擴展基礎磁區的大小。如果您使用邏輯卷管理器LVM(8),可以使用fdisk(8)洗掉磁區并以更大的大小重新創建它,或者使用lvexport(8)。在重新創建磁區時,請確保使用與以前相同的啟動磁盤圓柱來創建磁區!否則,調整大小操作肯定無法作業,您可能會丟失整個檔案系統。運行fdisk(8)后,運行resize2fs來調整ext 2檔案系統的大小,以使用新擴大的磁區中的所有空間。
      如果希望縮小ext2磁區,請首先使用resize2fs縮小檔案系統的大小。然后可以使用fdisk(8)縮小磁區的大小。縮小磁區大小時,請確保不使其小于ext2檔案系統的新大小。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      resize2fs  [選項]  device  [size]
      resize2fs  [ -fFpPM ]  [ -d debug-flags ]  [ -S RAID-stride ]  device  [ size ]

2、選項串列
      -d debug-flags
            打開各種resize2fs除錯特性,如果它們已經編譯成二進制檔案的話。除錯標志應該通過從以下串列中添加所需功能的數量來計算:
            2,除錯塊重定位。
            4,除錯iNode重定位。
            8,除錯移動inode表。
      -f
            強制執行,覆寫一些通常強制執行的安全檢查。
      -F
            執行之前,重繪檔案系統的緩沖區
      -M
            將檔案系統縮小到最小值
      -p
            顯示已經完成任務的百分比
      -P
            顯示檔案系統的最小值
      -S RAID-stride
            resize2fs程式將啟發式地確定在創建檔案系統時指定的RAID步長。此選項允許用戶顯式地指定RAID步長設定,以便由resize2fs代替。

3、實體
1)顯示sda1最小值 
      [root@localhost ~]# resize2fs -P /dev/sda1
      resize2fs 1.41.12 (17-May-2010)
      Estimated minimum size of the filesystem: 37540
2)設定sdb4為1k 
      [root@localhost ~]# resize2fs /dev/sdb4 1k
      resize2fs 1.41.12 (17-May-2010)
      resize2fs: New size smaller than minimum (373)     //小于最小值,失敗

uj5u.com熱心網友回復:

支持樓主,繼續

uj5u.com熱心網友回復:

e2image
        e2Image程式將位于設備上的ext2、ext3或ext4檔案系統元資料保存到由影像檔案指定的檔案中。通過對這些程式使用-i選項,image檔案可以由dupe2fs和除錯器來檢查。這可以幫助專家恢復嚴重損壞的檔案系統。
        如果image檔案是”-“,那么e2image的輸出將被發送到標準輸出,以便輸出可以管道到另一個程式,如gzip(1)。(請注意,目前只有在使用-r選項創建原始image檔案時才支持這一點,因為創建普通image檔案或QCOW 2映像的程序目前需要對檔案進行隨機訪問,這不能使用管道進行。)
最好為系統上的所有檔案系統創建映像檔案,并定期保存磁區布局(可以使用fdisk-l命令生成)。image檔案應該存盤在它所包含的資料的檔案系統以外的其他檔案系統上,以確保在檔案系統嚴重損壞的情況下可以訪問這些資料。
        為了節省磁盤空間,e2Image將image檔案創建為稀疏檔案,或以QCOW2格式創建。因此,如果需要將稀疏image檔案復制到另一個位置,則應該首先對其進行壓縮,或者使用GNU版本的cp ” sparse=always”選項。這不適用于QCOW2映像,它并不稀疏。
        ext2映像檔案的大小主要取決于檔案系統的大小和正在使用的inode數量。對于一個典型的10GB檔案系統,120萬個節點中有20萬個節點在使用,image檔案將大約為35兆位元組;在55萬個節點中使用15000個節點的4G檔案系統將產生一個3MB的image檔案。image檔案通常是可壓縮的;占用磁盤上32 MB空間的image檔案通常會壓縮到3或4MB。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        e2image [ -rsI ] device image-file

2、選項串列
        -I
                將檔案中的元資料恢復到磁區
        -r
                創建raw格式的image
        -Q
                創建QCOW2格式的image

3、說明
        1)“-I”選項
        “-I”選項將導致e2Image將存盤在映像檔案中的元資料重新安裝到設備上。它可用于在緊急情況下將檔案系統元資料還原回設備。只有當其他選擇失敗時,才應該使用”-I”選項作為一種絕望措施。如果檔案系統在創建image檔案后發生了更改,資料將丟失。通常,您應該首先對檔案系統進行完整的映像備份,以便以后嘗試其他恢復策略。
        2)“-r”選項
        “-r”選項將創建一個原始image檔案,而不是普通的image檔案。原始image檔案與普通image檔案有兩種不同之處。首先,將檔案系統元資料放置在適當的位置,以便e2fsck、dupe2fs、除錯器等。可以直接在原始image檔案上運行。為了盡量減少原始映像檔案占用的磁盤空間,將該檔案創建為稀疏檔案。(請注意使用不了解如何創建稀疏檔案的實用程式復制或壓縮/解壓縮該檔案;該檔案將與檔案系統本身一樣大!)其次,原始image檔案還包括標準image檔案沒有的間接塊和目錄塊,盡管這在將來可能會發生變化。
        當將檔案系統作為bug報告的一部分發送給維護人員時,有時會使用原始映像檔案到e2fsprogs。當以這種方式使用時,建議的命令如下(用適當的設備替換hda1):“e2image  -r  /dev/hda1  -  |  bzip2  >  hda1.e2i.bz2”。這將只發送元資料資訊,沒有任何資料塊。但是,目錄塊中的檔案名仍然可以顯示關于檔案系統內容的資訊,bug報告人員可能希望將這些資訊保密。要解決此問題,可以指定“-s”選項。這將導致e2Image對目錄條目進行置亂,并在寫入image檔案之前將目錄塊中任何未使用的部分清零。但是,“-s”選項將防止分析與散列樹索引目錄相關的問題
        請注意,即使您將“/dev/hda 1”替換為另一個原始磁盤映像或先前由e2Image創建的QCOW2映像,這也是可行的。
        3)“-Q”選項
        “-Q”選項將創建一個QCOW2 image檔案,而不是普通的或原始的image檔案。QCOW2 image包含原始image所做的所有資訊,但是與原始image不同的是,它并不稀疏。QCOW 2映像通過將資料以特殊格式存盤,并將資料緊密地打包在一起,從而將磁盤空間的數量降到最低,從而避免了漏洞,同時仍然最小化了大小。
        為了將檔案系統作為bug報告的一部分發送給維護人員到e2fsprogs,請使用以下命令:“e2image  -Q  /dev/hda1  hda1.qcow2“、”bzip2  -z  hda1.qcow2”。這將只發送元資料資訊,沒有任何資料塊。但是,目錄塊中的檔案名仍然可以顯示關于檔案系統內容的資訊,bug報告人員可能希望將這些資訊保密。要解決此問題,可以指定“-s”選項。這將導致e2Image對目錄條目進行置亂,并在寫入image檔案之前將目錄塊中任何未使用的部分清零。但是,“-s”選項將防止分析與哈希樹索引目錄相關的問題.
        請注意,e2Image創建的qcow2映像是規則的qcow2映像,可以通過知道qcow2格式的工具進行處理,例如qemu-img。

4、實體
保存sdb4元資料 
        [root@localhost ~]# e2image /dev/sdb4 sdb4
        e2image 1.41.12 (17-May-2010)
        [root@localhost ~]# file sdb4
        sdb4: Linux rev 1.0 ext2 filesystem data

uj5u.com熱心網友回復:

嗯啊 好東西  學習了啊

uj5u.com熱心網友回復:

ln
        為指定的目錄或者檔案創建鏈接,如果沒有指定鏈接名,那么會創建一個和源檔案名字一樣的鏈接。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        ln  [OPTION]... [-T]  TARGET  LINK_NAME   (1st form)
        ln  [OPTION]... TARGET                  (2nd form)
        ln  [OPTION]... TARGET... DIRECTORY     (3rd form)
        ln  [OPTION]...  –t  DIRECTORY  TARGET...  (4th form)
        第一種用法,創建一個名字為LINK_NAME的目標鏈接;第二種用法,創建指向當前目錄中目標的鏈接;第3和第4種用法,創建指向目錄中每個目標的鏈接。默認情況下創建硬鏈接,使用使用 “symbolic”創建符號鏈接。創建硬鏈接時,每個目標都必須存在。符號鏈接可以保存任意文本;如果稍后決議,則相對鏈接將根據其父目錄進行解釋。

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        --backup[=CONTROL]
                為已經存在的鏈接創建備份
        -b
                和“—backup”一樣,但是沒有引數
        -d | -F | --directory
                允許超級用戶創建硬鏈接
        -f | --force
                強制創建,如果已經存在,洗掉原來的硬鏈接
        -i | --interactive
                確認是否洗掉目的檔案
        -L | --logical
                創建硬鏈接到符號鏈接的關聯
        -n | --no-dereference
                處理與某個目錄的symlink的目標,就像它是一個正常檔案一樣
        -P | --physical
                創建符號鏈接的硬鏈接
        -s | --symbolic
                創建符號鏈接
        -S | --suffix=SUFFIX
                重寫通常的備份后綴
        -t | --target-directory
                指定要創建鏈接的目錄
        -T | --no-target-diretory
                將鏈接作為普通檔案
        -v | --verbose
                列印每個鏈接檔案的名字

3、實體
1)創建一個硬鏈接 
        [root@localhost weijie]# ln -v my.iso link1
        "link" => "my.iso"
2)創建一個符號鏈接 
        [root@localhost weijie]# ln -v -s my.iso link2
        "link2" -> "my.iso"
        [root@localhost weijie]# ls -l
        總用量 1068
        -rw-r--r-- 3 root root 358400 9月   7 15:46 link1
        lrwxrwxrwx 1 root root      6 9月  10 12:13 link2 -> my.iso




mkdir
        如果目錄不存在,那么就創建目錄。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        mkdir  [選項]  dir

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        -m | --mode=MODE
                設定目錄的權限
        -p | --parents
                創建多層目錄的時候,如果父目錄不存在,那么首先創建父目錄
        -v | --vervose
                顯示執行程序

3、實體
1)創建一個最大權限的目錄 
        [root@localhost weijie]# mkdir -m 777 test
        [root@localhost weijie]# ls -l
        總用量 360
        -rw-r--r-- 1 root root      0 9月   7 09:11 1.c
        -rw-r--r-- 1 root root 358400 9月   7 15:46 my.iso
        drwxrwxrwx 2 root root   4096 9月  10 11:33 test
2)創建目錄及其父目錄 
        [root@localhost weijie]# mkdir -v test01/test           //目錄test01不存在,無法在其下創建test目錄
        mkdir: 無法創建目錄"test01/test": 沒有那個檔案或目錄

        [root@localhost weijie]# mkdir -p -v test01/test         //使用選項-p,當目錄test01不存在的時候,首先創建test01
        mkdir: 已創建目錄 "test01"
        mkdir: 已創建目錄 "test01/test"
        You have new mail in /var/spool/mail/root

uj5u.com熱心網友回復:

學習linux的基礎的好東西,最好是能弄成一個下載的整體檔案;怎么感覺是找了本書來刷積分的。

uj5u.com熱心網友回復:

chgrp
        改變檔案或者目錄所屬的群組,使用引數“--reference”,可以改變檔案的群組為指定的關聯檔案群組。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        chgrp  [選項]  group  file
        chgrp  [選項]  –reference=RFILE  file

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        -c | --changes
                和verbose一樣,但是只有在發生改變的時候才顯示詳細資訊
        --dereference
                改變符號鏈接所指向的檔案,而不是符號鏈接自己。這是默認選項
        -h | --no-dereference
                修改符號鏈接,僅適用于可更改符號鏈接所有權的系統
        --no-preserve-root
                不要特殊處理“/”,默認選項
        --preserve-root
                未能對“/”進行遞回操作
        -f | --silent | --quiet
                忽略部分錯誤資訊
        --reference=file
                使用關聯檔案所屬的組,而不是指出一個具體的值
        -R, --recursive
                遞回處理目錄及其內部的檔案
        -v | --verbose
                顯示詳細資訊
        -H
                如果命令列引數是指向目錄的符號鏈接,請遍歷它。配合”-R”使用
        -L
                遍歷到遇到的目錄的每個符號鏈接。配合”-R”使用
        -P
                不要遍歷任何符號鏈接(默認)。配合”-R”使用

3、實體-
1)修改檔案所屬的組
        [root@localhost weijie]# ls –l                   //使用ls查看詳細資訊
        總用量 1072
        -rw-r--r-- 1 root root      0 9月   7 09:11 1.c
        -rw-r--r-- 3 root root 358400 9月   7 15:46 link
         [root@localhost weijie]# chgrp weijie 1.c    //修改組
        [root@localhost weijie]# ls –l                  //再次查看,修改已經成功
        總用量 1072
        -rw-r--r-- 1 root weijie      0 9月   7 09:11 1.c
        -rw-r--r-- 3 root root   358400 9月   7 15:46 link
2)使用選項“--reference”
        [root@localhost weijie]# chgrp --reference=1.c my.iso         //1.c的組已經是weijie了
        [root@localhost weijie]# ls -l
        總用量 1072
        -rw-r--r-- 1 root weijie      0 9月   7 09:11 1.c
        -rw-r--r-- 3 root weijie 358400 9月   7 15:46 my.iso           //my.iso所屬的組也變成wiejie
3)只修改符號鏈接自己
        [root@localhost wj]# ls -l 1.c 11.c                               //查看檔案資訊
        lrwxrwxrwx 1 root root 3 10月 26 10:11 11.c -> 1.c
        -rw-r--r-- 1 root root 0 10月 24 10:12 1.c
        [root@localhost wj]# chgrp -h weijie 11.c                       //修改組
        [root@localhost wj]# ls -l 1.c 11.c                              //查看檔案資訊,只有符號鏈接自己的組被修改了
        lrwxrwxrwx 1 root weijie 3 10月 26 10:11 11.c -> 1.c
        -rw-r--r-- 1 root root   0 10月 24 10:12 1.c

uj5u.com熱心網友回復:

參考 49 樓 weixin_43187247 的回復:
學習linux的基礎的好東西,最好是能弄成一個下載的整體檔案;怎么感覺是找了本書來刷積分的。



做了一個Linux學習的平臺,目前出來一個雛形,各位可以參考使用
鏈接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密碼:n7bk

uj5u.com熱心網友回復:

chmod
        改變檔案或者目錄的權限,可以用數字或者字母來標識權限。在數字模式下:0,代表沒有權限;1,代表可執行;2,代表可讀;4,代表可寫;多個權限可以相加。在字符模式下:x,代表執行;r,代表讀;w,代表寫;g,代表組權限;o,代表組內其他用戶權限;u,代表用戶權限ls命令中,看到的權限分別是:用戶權限、組權限、組內其他用戶權限。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        chmod  [選項]  mode  file
        chmod  [選項]  八進制模式  file
        chmod  [選項]  –reference=RFILE  file

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        -c | --changes
                和verbose一樣,但是只有在發生改變的時候才顯示詳細資訊
        --preserve-root
                禁止對根目錄遞回炒作
        --no-preserve-root
                不特殊對待根目錄,默認值
        -f | --silent | --quiet
                忽略部分錯誤資訊
        --reference=file
                使用關聯檔案所屬的組
        -v | --verbose
                顯示詳細資訊
        -R | --recursive
                用遞回的方式改變所有的目錄和子目錄

3、說明
        chmod根據模式更改每個給定檔案的檔案模式位,該模式可以是要進行的更改的符號表示,也可以是表示新模式位的位模式的八進制數。符號模式的格式是[ugoa...][[+-=][perms...]...],其中perms為集合rwxXst的零個或多個字母,或來自結合ugo的單個字母。可以給出多種符號模式,用逗號分隔。
        字母ugoa控制哪些用戶訪問檔案的權限將被更改:(u)擁有該檔案的用戶、(g)檔案組中的其他用戶、(o)不屬于檔案組的其他用戶或所有用戶(A)。如果所有這些都沒有給出,那么效果就好像給定了“a”,但是在umask中設定的位不受影響。
運算子‘+’使所選的檔案模式位被添加到每個檔案的現有檔案模式位中;‘-’使它們被洗掉;‘=‘使它們被添加,并使未提及的位被洗掉,除非目錄的未提及的設定用戶和組ID位不受影響。
        字母“rwxXst”為受影響的用戶選擇檔案模式位:(r)讀、(w)寫、(x)執行(或搜索目錄)、(X)只在檔案是目錄或已對某些用戶具有執行權限、(s)在執行時設定用戶或組ID、(t)限制洗掉標志或粘性位時執行/搜索。您可以指定“ugo”其中的一個或多個字母:(u)授予擁有檔案的用戶的權限,(g)授予屬于檔案組的其他用戶的權限,(o)授予上述兩個類別中任何一個用戶的權限。
        數字模式是1到4個八進制數字(0-7),通過將值4、2和1的位相加而得。省略的數字被假定為前導零。第一個數字選擇設定用戶ID(4)和設定組ID(2),并限制洗掉或粘貼(1)屬性。第二位數為擁有該檔案的用戶選擇權限:讀(4)、寫(2)和執行(1);第三位數選擇檔案組中具有相同值的其他用戶的權限;第四位數字選擇對不屬于檔案組的其他用戶具有相同值的權限。
        chmod從不更改符號鏈接的權限;chmod系統呼叫不能更改它們的權限。這不是一個問題,因為符號鏈接的權限從未被使用過。但是,對于命令列中列出的每個符號鏈接,chmod會更改指向檔案的權限。相反,chmod忽略遞回目錄遍歷程序中遇到的符號鏈接。

4、設定uid和gid
        如果檔案的組ID與用戶的有效組ID或用戶的輔助組ID不匹配,則chmod將清除常規檔案的“set-group-ID”位,除非用戶具有適當的權限。附加限制可能導致MODE或RFILE的“set-user-ID”和“set-group-ID”位被忽略.此行為取決于底層chmod系統呼叫的策略和功能。當有疑問時,檢查底層系統行為。
        chmod保留目錄的“set-user-ID”和“set-group-ID”位,除非您顯式地另外指定。您可以使用“u+s”和“g-s”這樣的符號模式設定或清除位,也可以用數字模式設定(但不清楚)這些位。

5、限制洗掉標志或粘性位
        受限制的洗掉標志或粘性位是一個位,其解釋取決于檔案型別。對于目錄,它防止非特權用戶洗掉或重命名目錄中的檔案,除非他們擁有該檔案或目錄;這稱為目錄的限制洗掉標志,通常在/tmp之類的可寫目錄中找到。對于一些舊系統上的常規檔案,這一位將程式的文本映像保存在交換設備上,以便在運行時更快地加載;這稱為粘性位。

6、實體
1)修改檔案的權限為最大值
        [root@localhost weijie]# chmod 777 1.c
        You have new mail in /var/spool/mail/root
        [root@localhost weijie]# ls -l 1.c
        -rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c
2)設定組和其他用戶只讀,使用字符模式設定
        [root@localhost weijie]# chmod 777 1.c           //改為最大權限
        [root@localhost weijie]# ls -l 1.c
        -rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chmod go+r 1.c          //修改組、其他用戶權限
        [root@localhost weijie]# ls -l 1.c
        -rwxrwxrwx 1 root weijie 0 9月   7 09:11 1.c     //這里沒有效果

        [root@localhost weijie]# chmod 700 1.c          //組、其他用戶權限為0
        [root@localhost weijie]# chmod go+r 1.c         //組、其他用戶增加讀權限
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c    //成功。可以看到使用字符模式的時候,權限是一種或的演算法,而不是直接賦值

uj5u.com熱心網友回復:

chown
        改變檔案或者目錄的所有者,或者所屬的群組。如果只給出一個所有者(用戶名或數字用戶ID),則該用戶將成為每個給定檔案的所有者,并且檔案的組不會被更改。如果所有者后面跟著冒號和組名(或數字組ID),在它們之間沒有空格,那么檔案的組所有權也會被更改。如果用戶名后面有冒號,但沒有組名,則使該用戶成為檔案的所有者,并將檔案組更改為該用戶的登錄組。如果給出冒號和組,但省略了所有者,則只更改檔案組;在本例中,Chown執行與chgrp相同的功能。如果只給出冒號,或者整個運算元為空,則所有者和組都不會更改。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        chmod  [選項]  [owner:group] | [owner] | [.group]  file
        chmod  [選項]  –reference=RFILE  file

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        -c | --changes
                和verbose一樣,但是只有在發生改變的時候才顯示詳細資訊
        --dereference
                修改符號鏈接所指的物件
        -h | --no-dereference
                修改符號鏈接
        --from=CURRENT_OWNER:CURRENT_GROUP
                僅當每個檔案的當前所有者和組匹配此處指定的所有者和組時,才更改其所有者和組。可以省略這兩種屬性之一,在這種情況下,省略的屬性不需要匹配。
        --preserve-root
                禁止對根目錄遞回炒作
        --no-preserve-root
                不特殊對待根目錄,默認值
        -f | --silent | --quiet
                忽略部分錯誤資訊
        --reference=file
                使用關聯檔案所屬的組
        -v | --verbose
                顯示詳細資訊
        -R | --recursive
                用遞回的方式改變所有的目錄和子目錄
        -H
                如果命令列引數是指向目錄的符號鏈接,請遍歷它。配合“-R”使用。
        -L
                遍歷到遇到的目錄的每個符號鏈接,配合“-R”使用。
        -P
                不要遍歷任何符號鏈接(默認),配合“-R”使用。

3、實體
1)通過名稱改變組資訊
        [root@localhost weijie]# ls -l 1.c                 //當前的組是weijie
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chown .david 1.c         //把組改為david。注意語法,前面有個點
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 root david 0 9月   7 09:11 1.c
2)通過id修改組資訊,id可以從/etc/group中找到
        [root@localhost weijie]# ls -l 1.c                 //當前的組是weijie
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chown .500 1.c         //把組改為500,這個id對應的名稱就是david。注意語法,前面有個點
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 root david 0 9月   7 09:11 1.c
3)通過名稱改所有者
        [root@localhost weijie]# ls -l 1.c                 //當前的所有者,root
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chown david 1.c         //把所有者改為david。
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 david weijie 0 9月   7 09:11 1.c
4)同時改變所有者和組 
        [root@localhost weijie]# ls -l 1.c                 //當前的組是weijie
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chown 500:500 1.c         //把組和所有者都改為500,注意語法,中間有個冒號
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 david david 0 9月   7 09:11 1.c

uj5u.com熱心網友回復:

你是想干嘛?

uj5u.com熱心網友回復:

我要好好研究一下,最近在學習LINUX,

uj5u.com熱心網友回復:

rmdir
        洗掉一個空目錄,可以同時洗掉途經的父目錄,但是要確保父目錄中沒有其他內容。
        此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
        rmdir  [選項]  dir

2、選項串列
        --version
                顯示命令版本資訊
        --help
                顯示幫助檔案
        --ignore-fail-on-non-empty
                忽略由非空目錄造成的錯誤資訊 
        -p | --parent
                洗掉目錄,以及途經的父目錄
        -v | --verbose
                顯示詳細資訊

3、實體
1)簡單洗掉一個目錄
        [root@localhost weijie]# ls -l test            //查看目錄的詳細資訊
        總用量 4
        drwxr-xr-x 2 root root 4096 9月  10 21:21 test
        [root@localhost weijie]# rmdir testt/test/       //洗掉目錄中的一個子目錄
        [root@localhost weijie]# ls -l test               //查看目錄資訊
        總用量 0
2)使用-p選項,洗掉子目錄以及途經的父目錄,父目錄只有當前的一個子目錄
        [root@localhost weijie]# mkdir test02/test          //在test02中創建目錄test
        You have new mail in /var/spool/mail/root
        [root@localhost weijie]# ls test02/                  //查看是否創建成功
        test
        [root@localhost weijie]# rmdir -p test02/test/     //使用-p選項洗掉目錄test,這樣會導致test02一起被洗掉
        [root@localhost weijie]# ls                           //查看當前目錄,test02已經不在了
        1.c  link  link1  link2  my.iso  test  testt  wj234.q1C  wjtpflR
3)使用-p選項,洗掉子目錄以及途經的父目錄,父目錄中還有其他內容
        [root@localhost weijie]# ls testt/                   //查看目錄內容
        1.c  test
        [root@localhost weijie]# rmdir -p testt/test/       //使用-p選項洗掉
        rmdir: 洗掉目錄 "testt" 失敗: 目錄非空                    //洗掉途經的父目錄testt出錯,因為這個目錄下還有其他內容
        [root@localhost weijie]# ls testt/                    //查看,子目錄已經洗掉 
        1.c
4)同時改變所有者和組 
        [root@localhost weijie]# ls -l 1.c                 //當前的組是weijie
        -rwxr--r-- 1 root weijie 0 9月   7 09:11 1.c
        [root@localhost weijie]# chown 500:500 1.c         //把組和所有者都改為500,注意語法,中間有個冒號
        [root@localhost weijie]# ls -l 1.c
        -rwxr--r-- 1 david david 0 9月   7 09:11 1.c

uj5u.com熱心網友回復:

ls
      顯示當前目錄下的所有內容。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      ls  [OPTION]... [FILE]...

2、選項串列
      --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      -a | --all
            列出所有的檔案
      -A | --almost-all
            列出所有檔案,但是不包含以 . 或者 .. 開頭的檔案
      --author
            和“-l”一起使用,列印出每個檔案的作者
      -b | --escape
            將檔案名中不可輸出的字符,以“\+字符編碼”的方式輸出。編碼為八進制
      --block-size=SIZE
            設定block的位元組
      -B | --ignore-backups
            不要列出以“~”結尾的隱含條目,其實就是備份檔案
      -c
            和“–lt”一起使用的時候,按照檔案狀態改變的時間排序;和“-l”一起使用的時候,通過名字排序
      -C
            多列顯示結果,默認選項
      --color[=WHEN]
            以高亮顏色顯示不同檔案,值可以是always、never、auto
      -d | --directory
            只顯示目錄名,不顯示目錄下的內容。不顯示符號鏈接指向的目錄
      -D | --dired
            為Emacs的dired模式設計的輸出
      -f
            不排序,使能“-aU”,關閉“-ls -color”
      -F | --classify
            在每個輸出項的后面,追加檔案型別識別符號。
            *,代表具有可執行權限的普通檔案。
            /,代表目錄。
            @,代表符號鏈接。
            |,代表有名管道。
            =,代表套接字。
      --file-type
            和“-F”一樣,但是不輸出*
      --format=WORD
            跨越-x,逗號-m,水平-x,長-l,單列-1,詳細-l,垂直-c
      --full-time
            顯示完整的時間,-l --time-style=full-iso
      -g
            和“-l”一樣,但是不顯示擁有者
      --group-directories-first
            將檔案前的目錄分組,但是“--sort”的任何使用都會禁用分組。
      -G | --no-group
            在長串列中,不要列印組名
      -h
            以更加易讀的方式顯示,和“-l”一起使用
      -si
            和“-h”一樣,但是以1000位整,而不是1024
      -H | --dereference-command-line
            遵循命令列中列出的符號鏈接
      --dereference-command-line-symlink-to-dir
            遵循指向目錄的每個命令列符號鏈接
      --hide=PATTERN
            不要列出與shell模式匹配的隱含條目(被-a或-A覆寫)
      --indicator-style=WORD
            將帶有樣式字的指示符附加到條目名稱:無(默認)、斜杠(-p)、檔案型別(-檔案型別)、分類(-F)
      -i
            顯示檔案的索引節點
      -I | --ignore=PATTERN
            不要列出與shell模式匹配的隱含條目
      -k
            等價于“--block-size=1K”
      -L | --dereference
            當顯示符號鏈接的檔案資訊時,請顯示鏈接參考檔案的資訊,而不是鏈接本身的資訊。
      -l
            以長格式顯示
      -m
            用水平的方式顯示,檔案之間用“,”和一個空格隔開
      -n | --numeric-uid-gid
            類似-l,但是列出用戶ID和組ID。
      -N | --literal
            列印原始條目名(不要專門處理控制字符)
      -o
            和選項“-l”一樣,但是不顯示組資訊
      -p | --indicator-style=slash
            在目錄前面加一個斜杠“/”
      -q | --hide-control-chars
            無法顯示的字符,使用“?”代替
      --show-control-chars
            按原樣顯示非圖形字符
      -Q | --quote-name
            用雙引號括住條目名
      --quoting-style=WORD
            對條目名使用參考樣式詞:literal,locale,shell,shell-always,c,escape
      -r | --reverse
            排序的時候,以檔案名反向排序
      -R | --recursive
            遞回顯示子目錄
      -s | --size
            以塊為單位顯示檔案大小。默認一塊1024k
      -S
            以檔案大小排序
      -t
            按檔案的修改時間,降序排列
      --sort=WORD
            按指定要求排序,而不是按名稱排序:不排序(-U),擴展名(-X),大小(-S),時間(-t),版本(-v)
      --time=WORD
            配合“-l”使用,將時間顯示為指定的,而不是修改時間:atime(-u),access(-u),use(-u),ctime(-c),或state(-c);如果指定了“--sort=time”,則使用指定的時間作為排序鍵。
      --time-style=STYLE
            配合“-l”使用,時間用指定的風格顯示:full-iso,long-iso,locale,+FORMAT。FORMAT解釋為“日期”;如果格式為      FORMAT1<newline>FORMAT2,FORMAT1適用于非最近檔案,FORMAT2適用于最近檔案;如果樣式以“POSIX-”為前綴,則樣式僅在POSIX區域設定之外生效。
      -T | --tabsize=COLS
            指定制表符的大小,默認是8
      -u
            配合“-lt”使用:按訪問時間排序,并顯示;配合“-l”使用:顯示訪問時間,按名稱排序;其他情況:按訪問時間排序
      -U
            不要排序;按目錄順序列出條目
      -v
            文本中自然排序的(版本)數字
      -w | --width=COLS
            設定螢屏寬度而不是當前值
      -x
            按行而不是按列出條目
      -X
            按輸入擴展名按字母順序排序
      -1
            每行列出一個檔案
      --lcontext
            顯示安全背景關系。啟用“-l”。對于大多數顯示幕來說,行可能太寬了。
      -Z, --context
            顯示安全背景關系,以便適合大多數顯示。只顯示模式、用戶、組、安全背景關系和檔案名。。
      --scontext
            只顯示安全背景關系和檔案名。

3、說明
      在默認情況下,使用顏色來區分檔案型別是禁用的,并且使用“--color=never“。只有當標準輸出連接到終端時,ls才會發出顏色代碼。LS_CONERS環境變數可以更改設定,使用dircolors命令來設定。
      大小可以是KB,1000; K,1024,;MB,1000*1000;M,1024*1024

4、實體
1)顯示所有檔案,并且在后面追加檔案型別
      [root@localhost weijie]# ls -lF
      總用量 1072
      -rw-r--r-- 1 root root      0 9月   7 09:11 1.c
      -rw-r--r-- 3 root root 358400 9月   7 15:46 link
      -rw-r--r-- 3 root root 358400 9月   7 15:46 link1
      lrwxrwxrwx 1 root root      6 9月  10 12:13 link2 -> my.iso
      -rw-r--r-- 3 root root 358400 9月   7 15:46 my.iso
      drwxrwxrwx 2 root root   4096 9月  10 11:33 test/
      drwxr-xr-x 2 root root   4096 9月  10 16:10 test02/
      drwxr-xr-x 2 root root   4096 9月  10 11:35 testt/
      -rw------- 1 root root      0 9月   7 14:55 wj234.q1C
      drwx------ 2 root root   4096 9月   7 14:50 wjtpflR/
2)顯示目錄名稱,不顯示目錄下的內容
      [root@localhost /]# ls /weijie/                //列出weijie目錄下的所有檔案
      1.c  link  link1  link2  my.iso  test  test02  testt  wj234.q1C  wjtpflR
       [root@localhost /]# ls -ld /weijie/          //只顯示weijie這個目錄本身的資訊
      drwxr-xr-x 6 root root 4096 9月  10 15:28 /weijie/
      [root@localhost /]# 

uj5u.com熱心網友回復:

find
      在指定的目錄下查找檔案,并可對找到的檔案執行指定的操作。Find指定會從指定的目錄向下遞回搜索各個子目錄。GNUf ind根據優先級規則從左到右計算給定運算式,從而搜索根植于每個給定檔案名的目錄樹,直到找到結果,此時find移到下一個檔案名。如果在安全很重要的環境中使用find(例如,如果您使用它搜索其他用戶可寫的目錄),則應閱讀findutils檔案中的“Security Considerations”一章。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      find  [-H]  [-L]  [-P]  [-D debugopts]  [-Olevel]  [path...]  [expression]

2、選項串列
      -version | --version
            顯示命令版本資訊
      -help | --help
            顯示幫助檔案
      -P
            找到符號鏈接的時候,所有的屬性都來自符號鏈接。這是默認選項
      -L
            找到符號鏈接的時候,所有的屬性來自檔案本身,而不是符號鏈接
      -H
            找到符號鏈接的時候,所有的屬性都來自符號鏈接。
      -D debugoptions
            列印診斷資訊;這可能有助于診斷問題,為什么查找不做您想做的事情。除錯選項串列應以逗號分隔。可以有一下選項:
            help,解釋除錯選項
            tree,以其原始和優化的形式顯示運算式樹
            stat,使用stat和lstat系統呼叫檢查作為檔案的列印訊息。find程式試圖將此類呼叫最小化。
            opt,列印有關運算式樹優化的診斷資訊;請參見-O選項。
            rates,列印一個摘要,指示每個謂詞成功或失敗的頻率。
      -Olevel
            啟用查詢優化。Find程式重新排序測驗以加快執行速度,同時保持總體效果;也就是說,具有副作用的謂詞不會相對于其他謂詞重新排序。在每個優化級別上執行的優化如下:
            0,相當于優化級別1
            1,這是默認的優化級別,與傳統行為相對應。運算式被重新排序,以便首先執行僅基于檔案名(例如-name和-regex)的測驗。
            2,任何-type或-xtype的測驗都是在只基于檔案名的任何測驗之后,而是在需要inode提供資訊的任何測驗之前執行的。在許多Unix的現代版本上,readdir()回傳檔案型別,因此這些謂詞比需要先統計檔案的謂詞計算速度更快
            3,在此優化級別上,啟用了完全基于成本的查詢優化器。對測驗順序進行了修改,以便首先執行廉價(即快速)測驗,并在必要時執行更昂貴的測驗。在每個成本范圍內,謂詞將根據它們是否可能成功而更早或更晚地進行評估。對于-o,有可能成功的謂詞會更早地進行評估,而對于-a,可能會失敗的謂詞將更早地進行評估。

3、說明
      -H,-L和-P選項控制符號鏈接的處,。后面的命令列引數被視為要檢查的檔案或目錄的名稱,直到以‘-’或‘(’或‘!’開頭的第一個引數為止。該引數和隨后的任何引數都被視為描述要搜索的內容的運算式。如果沒有提供路徑,則使用當前目錄。如果沒有給出運算式,則使用運算式“-print”。
      這些選項控制find的行為,但在上一個路徑名之后立即指定。五個“實”選項-H,-L,-P,-D和-O必須出現在第一個路徑名之前,如果有的話。“--”也可以用來表示任何剩余的引數都不是選項(但如果在起始點串列中使用通配符,則確保所有起始點都以“./”或“/”開頭通常更安全)。
如果指定了-H、-L和-P中的一個,最后一個出現在命令列上的操作將生效。由于-P選項是默認的,因此,除非指定了-H或-L,否則-P選項應視為有效。在命令列本身的處理程序中,在搜索開始之前,GNU經常查找stats檔案。當-H或-L選項生效時,列出的任何作為-newer引數的符號鏈接將被取消參考,并且時間戳將從符號鏈接指向的檔案中提取。同樣的考慮也適用于-newerxy,-anewer和-cnewer。

4、運算式
      運算式由OPTION(這些選項影響整體操作而不是處理特定檔案,并且始侄訓傳true)、TEST(回傳真或假值)和ACTION(有副作用并回傳真或假值)組成,所有這些選項都由運算子‘-’分隔。如果運算式不包含“-prune”以外的操作,則對運算式為true的所有檔案執行“-print”。
      1)OPTION
      所有選項總是回傳true。除了-daystart、-follow和-regextype之外,這些選項會影響所有測驗,包括在選項之前指定的測驗。這是因為這些選項是在分析命令列時處理的,而測驗在檢查檔案之前不會執行任何操作。在這方面,-daystart、-follow和-regextype選項是不同的,并且只對稍后出現在命令列中的測驗有影響。因此,為了清晰起見,最好將它們放在運算式的開頭。如果不這樣做,就會發出警告。
      -d
            depth的同義詞,與FreeBSD、NetBSD、MacOSX和OpenBSD兼容.
      -daystart
            測量時間(用于-amin,-atime,-cmin,-ctime,-mmin和-mtime)從今天開始,而不是從24小時前開始。此選項僅影響稍后出現在命令列中的測驗。
      -depth
            在目錄本身之前處理每個目錄的內容。
      -follow
            使用-L選項代替。解除參考符號鏈接。“follow”選項只影響在命令列中出現的測驗。
      -help | --help
            列印出幫助資訊,并且退出
      -ignore_readdir_race
            通常情況下,Find將在無法統計檔案時發出錯誤訊息。如果您提供了此選項,并且在find從目錄中讀取檔案的名稱和它試圖統計該檔案的時間之間洗掉了一個檔案,則不會發出錯誤訊息。這也適用于命令列中給出其名稱的檔案或目錄。此選項在讀取命令列時生效,這意味著您不能在打開此選項的情況下搜索檔案系統的一個部分,并在關閉該選項時搜索其中的一部分(如果需要這樣做,則需要發出兩個find命令,一個帶有該選項,另一個沒有)。
      -maxdepth levels
            查找的最大深度,“-maxdepth 0”只對命令列出現的TEST和ACTION有效
      -mindepth levels
            不要在低于levels的級別上應用任何測驗或操作,“-maxdepth 1”意味著處理除命令列引數以外的所有檔案。
      -mount
            不要將目錄降到其他檔案系統上。-xdev的替代名稱,用于與find的其他版本兼容。
      -noignore_readdir_race
            關閉-ignore_readdir_race.
      -noleaf
            不要通過假設目錄包含的子目錄比硬鏈接數少兩個來進行優化。在搜索不遵循Unix目錄鏈接約定的檔案系統(如CD-ROM或MS-DOS檔案系統或AFS卷掛載點)時,需要此選項。普通Unix檔案系統上的每個目錄至少有兩個硬鏈接:name和“.”。此外,它的子目錄(如果有的話)都有一個“.”鏈接到該目錄的條目。當find檢查一個目錄時,在它宣告了比目錄的鏈接數少兩個子目錄之后,它知道目錄中的其余條目是非目錄的(目錄樹中的“leaf”檔案)。如果只需要檢查檔案的名稱,就不需要對它們進行統計;這就大大提高了搜索速度。
      -regextype type
            更改命令列后面發生的-regex和-iregex測驗所理解的正則運算式語法。
      -version, --version
            列印find命令的版本資訊,并且退出
      -warn, -nowarn
            關倍訓者打開警告資訊
      -xautofs
            不要降低autofs檔案系統上的目錄
      -xdev
            不要降低其他檔案系統上的目錄
      2)TEST
      有些測驗,例如newerXY和-samefile,允許比較當前正在檢查的檔案和命令列上指定的參考檔案。當使用這些測驗時,參考檔案的解釋由選項H、-L和-P以及前面的任何選項決定,但是在決議命令列時,只檢查一次參考檔案。如果無法檢查參考檔案(例如,stat(2)系統呼叫失敗),則會發出錯誤訊息,并查以非0狀態退出。
      +n
            大于n
      -n
            小于n
      n
            等于n
      -amin m
            查找m分鐘之前被訪問過的檔案
      -anewer file
            最近被訪問的檔案,而不是最近被修改的檔案
      -atime m
            最近m天前被訪問的檔案
      -cmin m
            查找m分鐘之前被修改過檔案狀態的檔案
      -cnewer file
            最近被未改過檔案狀態的檔案,而不是最近被修改的檔案
      -ctime m
            最近m天前被修改檔案狀態的檔案
      -mmin m
            查找最近m分鐘前被修改過內容的檔案
      mtime m
            查找最近m天前被修改過內容的檔案
      -empty
            查找大小為0的目錄和檔案
      -executable
            查找可以被執行的檔案,或者可以被搜索的目錄
      -fstype type
            查找在指定檔案系統上的檔案
      -gid id
            查找屬于指定組id的檔案
      -group name
            查找屬于指定組的檔案
      -ilname pattern
            和“-lname”一樣,但匹配是不區分大小寫的。如果-L選項或-follow選項生效,則除非符號鏈接中斷,否則此測驗回傳false。
      -iname pattern
            和“-name”一樣,但匹配是不區分大小寫的
      -inum n
            檔案inode編號n。通常情況下,使用-samefile測驗更容易。
      -ipath pattern
            和“-iwholename”一樣,不建議使用
      -iregex pattern
            和“-regex”一樣,但是匹配不區分大小寫
      -iwholename pattern
            和“-wholename”一樣,但是匹配不區分大小寫
      -links n
            有n個鏈接的檔案
      -lname pattern
            找找符合指定匹配模式的符號鏈接檔案
      -name pattern
            檔案名的基(洗掉了前導目錄的路徑)與shell模式匹配。元字符(“*”、“?”和“[]”)與“.”匹配。
      -newer file
            比file更近修改的檔案
      -newerXY reference
            將當前檔案的時間戳與參考進行比較。參考引數通常是檔案的名稱(其中一個時間戳用于比較),但也可能是描述絕對時間的字串。X和Y是其他字母的占位符,這些字母選擇屬于如何使用參考進行比較的時間。
            a,檔案的訪問時間。
            B,檔案的產生時間
            c,檔案inode狀態改變的時間
            m,檔案的修改時間
            t,參考被直接解釋為時間。
      -nogroup
            沒有組對應于檔案的組ID
      -nouser
            沒有用戶對應于檔案的用戶ID。
      -path pattern
            檔案名與shell模式匹配。元字符不處理“/”或‘.’,例如“find  .  -path  ’./sr*sc‘”為名為“./src/misc”的目錄列印一個條目。若要忽略整個目錄樹,請使用-prune而不是檢查樹中的每個檔案。例如,要跳過目錄“src/emacs”及其下的所有檔案和目錄,并列印找到的其他檔案的名稱,請執行如下操作“find  .  -path  ./src/emacs  -prune  -o  –print”
      -perm  –mode
            為檔案設定了所有權限位模式。符號模式以這種形式被接受,這通常是想要使用它們的方式。如果使用符號模式,則必須指定“u”、“g”或“o”
      -perm  /mode
            為該檔案設定任何權限位模式。符號模式以這種形式被接受。如果使用符號模式,則必須指定“u”、“g”或“o”。有關一些說明性示例,請參見示例部分。如果沒有在模式中設定權限位,此測驗將匹配任何檔案(這里的想法是與-perm-000的行為一致)。
      -perm +mode
            不推薦使用這種模式集中任何權限位搜索檔案的舊方法。你應該改用“-perm /mode”。例如,‘+u+x’是一個有效的符號模式(等效于+u,+x,即0111)。
      -size  n[cwbkMG]
            查找指定大小的檔案。檔案單位默認是塊,512位元組。有以下單位:
            ‘b’,521位元組的塊,默認
            ‘c’,bytes
            ‘w’,2個位元組
            ‘k’,1024位元組
            ‘M’,1048576位元組
            ‘G’,1073741824位元組
      -type 型別
            查找指定型別的檔案。c,字符設備;d,目錄檔案;p,有名管道;f,普通檔案;l,符號鏈接;s,socket檔案
      -uid n
            指定檔案的uid
      -used n
            最后一次訪問檔案是在最后一次更改狀態后的n天。
      -user name
            查找屬于指定用戶的檔案
      -wholename pattern
            等價于“-path”
      -writable
            匹配可寫的檔案。
      -xtype c
            和“-type”相同,除非檔案是符號鏈接。對于符號鏈接,-xtype檢查-type不檢查的檔案的型別。
      -context pattern
            檔案的安全背景關系與GLOB模式相匹配。
      3)ACTIONS
      -delete
            洗掉檔案;如果洗掉成功,則為true。如果洗掉失敗,則發出錯誤訊息。如果“-delete”失敗,find的退出狀態將為非零
      -exec command
            執行命令;如果回傳0狀態,則為true。以下所有要查找的引數都被視為命令的引數,直到遇到由‘;’組成的引數為止。字串“{}”被當前檔案名替換,當前檔案名在命令的引數中出現在任何地方,而不僅僅是在只有它的引數中,就像在find的某些版本中那樣。這兩個構造可能都需要轉義(用‘\’)或參考,以保護它們不受外殼的擴展。有關使用-exec選項的示例,請參閱示例部分。指定的命令對每個匹配的檔案運行一次。該命令在啟動目錄中執行。在使用-exec操作時存在不可避免的安全問題;您應該使用-execdir選項。
      -exec command {} +
            -exec操作的這個變體在選定的檔案上運行指定的命令,但是命令列是通過在末尾追加每個選定的檔案名來構建的;命令的呼叫總數將比匹配的檔案數少得多。命令列的構建方式與xargs構建其命令列的方式大致相同。命令中只允許“{}”的一個實體。命令在起始目錄中執行。
      -execdir command ;
      -execdir command {} +
            類似-exec,但指定的命令是從包含匹配檔案的子目錄運行的,該子目錄通常不是您開始查找的目錄。
      -fls file
            真,類似“-ls”,但是寫檔案類似“-fprint”。輸出檔案總是被創建,即使謂詞永遠不匹配。
      -fprint file
            真,將完整的檔案名列印到檔案中。如果運行find時檔案不存在,則創建檔案;如果檔案存在,則截斷檔案。檔案名‘/dev/stdout’和‘/dev/stderr’是專門處理的;它們分別參考標準輸出和標準錯誤輸出。輸出檔案總是被創建,即使謂詞永遠不匹配
      -fprint0 file
            真,類似“-print0”,但是寫檔案類似“-fprint”。輸出檔案總是被創建,即使謂詞永遠不匹配。
      -fprintf file format
            真,類似“-printf”但是寫到檔案類似“-fprint”。輸出檔案總是被創建,即使謂詞永遠不匹配。
      -ls
            真,在標準輸出上以“ls -dils”格式列出當前檔案。塊計數為1K塊,除非設定了環境變數POSIXLY_TRIDER,在這種情況下使用了512位元組塊。
      -ok command ;
            類似“-exec”,但是先問用戶。如果用戶同意,運行命令。否則只會回傳FALSE。如果運行該命令,它的標準輸入將從/dev/null重定向。
      -okdir command ;
            類似“-execdir”,但是和“-ok”一樣先詢問用戶。如果用戶不同意,只需回傳false。如果運行該命令,它的標準輸入將從/dev/null重定向。
      -print
            真,在標準輸出上列印完整的檔案名,然后是換行符。
      -print0
            真,在標準輸出上列印完整的檔案名,然后是空字符
      -printf format
            真,在標準輸出上列印格式,解釋‘\’轉義和‘%’指令。欄位寬度和精度可以用“printf  C“函式指定。請注意,許多欄位是以%s而不是%d的形式列印的。與-print不同,-printf不會在字串末尾添加換行符。
      -prune
            如果該檔案是一個目錄,則不要下降到它
      -quit
            馬上退出。不會繼續運行子行程,但不會處理命令列上指定的路徑。
      4)運算子,按優先次序排列
      ( expr )
            強制優先
      ! expr
            取反
      -not expr
            取反,但不適合POSIX
      expr1 expr2
            隱含的“與“操作
      expr1 -a expr2
            和“expr1 expr2“一樣
      expr1 -and expr2
            和“expr1 expr2“一樣,但是不適合POSIX
      expr1 -o expr2
            “或“操作
      expr1 -or expr2
            “或“操作,不適合POSIX
      expr1 , expr2
            始終對expr1和expr2進行計算。expr1的值被丟棄;串列的值是expr2的值。逗號運算子對于搜索幾種不同型別的東西很有用,但是只遍歷檔案系統層次結構一次

uj5u.com熱心網友回復:

打開,學習。樓主加油

uj5u.com熱心網友回復:

5、環境變數
      LANG,為未設定或空的全域變數提供默認值。
      LC_ALL,如果設定為非空字串值,則重寫所有其他全域變數的值。
      LC_COLLATE,POSIX標準指定此變數影響用于-name選項的模式匹配。對‘LC_COLLATE’的支持取決于系統庫。這個變數還會影響對“-ok“的回應的解釋;當‘LC_MESSAGES’變數選擇用于將回應解釋為”-ok“的實際模式時,模式中任何括號運算式的解釋都會受到‘LC_COLLATE’的影響。
      LC_CTYPE,如果系統的fnmatch (3)庫函式支持該變數,則此變數將影響正則運算式中使用的字符類的處理以及名稱測驗。此變數還會影響用于解釋“-ok“發出的提示的回應的正則運算式中任何字符類的解釋。當列印檔案名時,‘LC_CTYPE’環境變數還將影響哪些字符被認為是不可列印的;
      LC_MESSAGES,確定要用于全域訊息的區域設定。如果設定了‘POSIXLY_RETERT’環境變數,這還將確定對“-ok“操作所作提示的回應的解釋
      NLSPATH,確定全域資訊目錄的位置。
      PATH,影響搜索以查找-exec、-execdir、-ok和-okdir呼叫的可執行檔案的目錄。
      POSIXLY_CORRECT,確定-ls和-fls使用的塊大小。如果設定了POSIXLY_RIDERT,則塊是512位元組的單位。否則,它們是1024位元組的單位。
      TZ,影響用于-printf和-fprintf的一些與時間相關的格式指令的時區。

6、回傳值
      如果成功,回傳0;如果失敗,回傳大于0的數。

7、例子程式
      find  /tmp  -name  core  -type f  -print | xargs  /bin/rm  -f
            在/tmp目錄中或下面查找名為core的檔案并洗掉它們。請注意,如果存在包含換行符、單引號或雙引號或空格的檔案名,則此操作將不正確。
      find  /tmp  -name  core  -type  f  -print0 | xargs  -0  /bin/rm  -f
            在目錄/tmp中或下面查找名為core的檔案,并洗掉它們,處理檔案名,以便正確處理包含單引號或雙引號、空格或換行符的檔案或目錄名稱。名稱測驗出現在-type測驗之前,以避免對每個檔案呼叫stat(2)。
      find  .  –type  f  -exec  file  '{}'  \;
            對當前目錄中或當前目錄下的每個檔案運行“file”。注意,大括號被用單引號括起來,以保護它們不被解釋為shell腳本標點符號。分號同樣受到反斜杠的保護,盡管在這種情況下也可以使用單引號。
      find  /  \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) ,  \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)
            只遍歷檔案系統一次,將setuid檔案和目錄列出到/root/suid.txt,并將大型檔案列出到/root/big.txt
      find  $HOME  -mtime 0
            在您的主目錄中搜索在過去24小時內已經修改的檔案。此命令的作業方式是這樣的,因為每個檔案上次修改后的時間被除以24小時,其余部分被丟棄。這意味著要匹配-mtime 0,檔案必須在過去進行修改,而修改時間不到24小時前。
      find  /sbin  /usr/sbin  -executable  \!  -readable –print
            搜索可執行但不可讀的檔案
      find  .  –perm  664
            搜索所有者和組有讀寫權限,但其他用戶可以讀取但不能寫入的檔案。滿足這些條件但設定了其他權限的檔案(例如,如果有人可以執行該檔案)將不匹配。
      find  .  -perm  -664
            搜索所有者和組有讀寫權限的檔案,以及其他用戶可以讀取的檔案,而不考慮是否存在任何額外的權限位(例如可執行位)。例如,這將匹配具有模式0777的檔案。
      find  .  –perm  /222
            搜索可寫的檔案
      find  .  -perm  /220
      find  .  –perm  /u+w,g+w
      find  .  -perm  /u=w,g=w
            所有這三個命令都執行相同的操作,但是第一個命令使用檔案模式的八進制表示,另外兩個命令使用符號形式。這些命令都搜索其所有者或組可寫的檔案。檔案不必由所有者和組同時寫入才能匹配,兩者都可以。
      find  .  –perm  -220
      find  .  -perm  -g+w,u+w
            這兩個命令執行相同的操作;搜索它們的所有者和組都可以寫的檔案。
      find  .  -perm  -444  -perm  /222  !  -perm  /111
      find  .  –perm  -a+r  -perm  /a+w  !  -perm  /a+x
            這兩個命令都搜索每個人都可讀的檔案(-perm -444或-perm -a+r),至少設定了一個寫入位集(-perm /222或-perm /a+w),但任何人都不能執行(!-perm /111和!-perm /a+x)。
      cd  /source-dir
      find  .  -name  .snapshot  -prune  -o  \( \! -name *~ -print0 \)|
      cpio  -pmd0  /dest-dir
      此命令將/source-dir的內容復制到/dest-dir,但省略了名為“.snapshot “的檔案和目錄(以及其中的任何內容)。它還省略了名稱以~結尾的檔案或目錄,而不是其內容。
      find  repo/  -exec  test  -d  {}/.svn  -o  -d  {}/.git  -o  -d  {}/CVS  ;  -print  –prune
            給定以下專案目錄及其相關的SCM管理目錄,高效地搜索專案的根
      repo/project1/CVS
      repo/gnu/project2/.svn
      repo/gnu/project3/.svn
      repo/gnu/project3/src/.svn
      repo/project4/.git

8、實體演示
1)在根目錄下查找doc后綴的檔案 
      [root@localhost test02]# find / -name *.doc
      find: 探測到檔案系統回圈;“/var/named/chroot/var/named” 是與 “/var/named” 相同的檔案系統回圈的一部分。
      /usr/share/cvs/contrib/intro.doc
      /usr/lib/python2.6/pdb.doc
      /lib/kbd/keymaps/i386/qwerty/no-latin1.doc
2)將查找到的內容輸出到res.txt 
      [root@localhost test02]# find / -name *.doc -fprint res.txt        //找到檔案,輸出到res.txt
      find: 探測到檔案系統回圈;“/var/named/chroot/var/named” 是與 “/var/named” 相同的檔案系統回圈的一部分。
      [root@localhost test02]# cat res.txt                  //查看輸出結果
      /usr/share/cvs/contrib/intro.doc
      /usr/lib/python2.6/pdb.doc
      /lib/kbd/keymaps/i386/qwerty/no-latin1.doc
3)查找屬于指定用戶的檔案 
      [root@localhost test02]# find / -user david -perm 777      //查找屬于用戶david,并且權利是777的檔案
      find: 探測到檔案系統回圈;“/var/named/chroot/var/named” 是與 “/var/named” 相同的檔案系統回圈的一部分。
/wj/._主頁logo魏杰it教育.jpg
      find: “/proc/7990/task/7990/fd/5”: 沒有那個檔案或目錄
      find: “/proc/7990/task/7990/fdinfo/5”: 沒有那個檔案或目錄
      find: “/proc/7990/fd/5”: 沒有那個檔案或目錄
      find: “/proc/7990/fdinfo/5”: 沒有那個檔案或目錄

uj5u.com熱心網友回復:

mv
      將檔案或者目錄移動到另一個地方,或者重命名。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      mv  [選項]  [-T]  src  dst
      mv  [選項]  src  directory 
      mv  [選項]  -t  directory  src


2、選項串列
      --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      --backup=[control]
            為每一個存在的檔案創建備份
      -b
            和“--backup”一樣,但是沒有引數
      -f | --force
            強制移動
      -i | --interactive
            使用互動的方式移動
      -n | --no-clobber
            不覆寫已經存在的檔案。如果同時制定了“-i,-n,-f”中的多個選項,那么只有最后一個選項有效。
      --strip-trailing-slashes
            從每個源引數中移除任何尾隨斜線。
      -S | --suffix=SUFFIX
            重寫通常的備份后綴
      -t | --target-directory
            將所有源檔案移動到目標檔案夾
      -T |  --no-target-directory
            將目標視為正常檔案
      -u | --update
            當目的檔案不存在,或者源檔案比目的檔案新的時候才移動
      -v | --verbose
            顯示詳細執行程序

3、說明
      備份后綴為‘~’,除非設定為“--”后綴或者SSIMPLE_BACKUP_SUFFIX。版本控制方法可以通過“--backup”的選項或通過VERSION_CONTROL環境變數來選擇。以下是這些值:
      none,off:從不備份,即使給出了“--backup”選項。
      numbered,t:創建編號備份。
      existing,nil:如果有編號備份,則為編號,否則為簡單。
      simple,over:總是創建簡單備份。

4、實體
1)在同一個目錄下移動,即重命名。 
      [root@localhost weijie]# ls
      1.c  link  link1  link2  my.iso  test  test01  wj234.q1C  wjtpflR
      [root@localhost weijie]# mv test01 test02
      [root@localhost weijie]# ls
      1.c  link  link1  link2  my.iso  test  test02  wj234.q1C  wjtpflR
2)移動到其他地方 
      [root@localhost test02]# ls
      test
      [root@localhost test02]# mv test/ /weijie/testt
      [root@localhost test02]# ls
      [root@localhost test02]# cd ..
      [root@localhost weijie]# ls
      1.c  link  link1  link2  my.iso  test  test02  testt  wj234.q1C  wjtpflR

uj5u.com熱心網友回復:

diff
      逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出。如果要指定要比較目錄,那么diff命令會比較目錄中相同檔案名的檔案,不會比較子目錄。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      diff  [選項]  files

2、選項串列
      -v | --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      -m | --mode=MODE
            設定目錄的權限
      -i | --ignore-case
            比較的時候,忽略大小寫
      --ignore-file-name-case
            在比較檔案名的時候,忽略大小寫
      --no-ignore-file-name-case
            比較檔案名的時候,不能忽略大小寫
      -E | --ignore-tab-expansion
            不比較tab
      -b | --ingore-space-change
            不比較空格數
      -w | --ignore-all-space
            忽略所有的空格
      -B | --ignore-blank-lines
            不比較空白行
      -I res | --ignore-mathcing-lines=res
            不比較含有指定字串res的行
      --strip-trailing-cr
            出去輸入行尾隨的東西
      -a | --text
            將所有的檔案都當做文本檔案
      -c  -C NUM  --context[=NUM]
            顯示不同之處的前后部分內容,默認是3行
      -u  -U NUM  --unified[=NUM]
            顯示相同之處的前后部分內容,默認是3行
      --label LABEL
            使用檔案的標簽,而不是名字
      -p | --show-c-function
            比較c語言檔案的時候,顯示不同之處所在的函式
      -F RE  |  --show-function-line=RE
            顯示匹配RE的最近的行
      -q | --brief
            只顯示是否有差異,不顯示詳細內容
      -e | --ed
            輸出一個ed腳本
      --normal
            輸出一個正常的diff
      -n | --rcs
            結果以rcs的方式顯示
      -y | --side-by-side
            將兩個檔案已并列方式顯示比較結果
      -W num | --width=NUM
            使用“-y”選項的時候,指定列寬
      --left-column
            只輸出公共行的左列
            --suppress-common-lines
      不要輸出公共行
            -D NAME | --ifdef=NAME
      輸出合并檔案以顯示‘#ifdef NAME’的差異
            --GTYPE-group-format=GFMT
      同上,但用GFMT格式化GTYPE輸入組
      --line-format=LFMT
            同上,但用LFMT格式化GTYPE輸入組
      --LTYPE-line-format=LFMT
            同上,但用LFMT格式化LTYPE輸入行
      -l | --paginate
            將輸出傳遞給pr”以分頁
      -t | --expand-tabs
            將制表符展開為輸出中的空格
      -T | --initial-tab
            通過預置選項卡使制表符對齊
      -N | --new-file
            將缺席檔案視為空檔案
      --unidirectional-new-file
            將缺席的第一批檔案視為空檔案
      -s | --report-identical-files
            當兩個檔案相同時報告
      -X FILE | --exclude-from=FILE
            排除與檔案中任何模式匹配的檔案
      -S FILE | --starting-file=FILE
            從檔案開始比較目錄時
      -r | --recursive
            用遞回的方式比較子目錄下的所有檔案
      -x path
            不比較指定的檔案
      --from-file=FILE1
            將FILE 1與所有運算元進行比較。FILE 1可以是一個目錄
      --to-file=FILE2
            將所有運算元與檔案2進行比較。檔案2可以是一個目錄
      --horizon-lines=NUM
            保持通用前綴和后綴的NUM行
      -d  --minimal
            努力找出一組較小的變更
      --speed-large-files
            假設檔案很大,并且有許多零散的小更改。

3、實體
1)比較兩個檔案,不使用引數 (兩個檔案只有第一行不同)
      [root@localhost test02]# diff 1.c 2.c             //直接比較,這里只輸出不同之處
      1c1
      < 逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出,adAD檔案。
      ---
      > 逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出。
2)使用選項-y,以分列的方式輸出兩個檔案 
      [root@localhost test02]# diff -y 1.c 2.c             //使用選項y,這里以列的方式,顯示檔案全部內容
      逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出,adAD檔案。              | 逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出。
      如果要指定要比較目錄,那么diff命令會比較目錄中相同檔案名的文                  如果要指定要比較目錄,那么diff命令會比較目錄中相同檔案      名的文
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS          此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUS
      [root@localhost test02]# diff  1.c 2.c
3)使用選項-W,指定列寬 
      [root@localhost test02]# diff -y -W 100 1.c 2.c     //這里指定列寬100,并不能完全顯示,因此看不到差異之處
      逐行比較兩個文本檔案,把檔案的差異顯示到標準      | 逐行比較兩個文本檔案,把檔案的差異顯示到標準
      如果要指定要比較目錄,那么diff命令會比較目錄         如果要指定要比較目錄,那么diff命令會比較目錄
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentO     此命令的適用范圍:RedHat、RHEL、Ubuntu、CentO
4)比較目錄 
      [root@localhost weijie]# diff test01 test02               //這里只比較目錄下相同名字的檔案
      diff test01/1.c test02/1.c
      1c1
      < 逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出。
      ---
      > 逐行比較兩個文本檔案,把檔案的差異顯示到標準輸出,adAD檔案。
5)使用選項-q,查看是否不同
      [root@localhost weijie]# diff -q test01/1.c test02/1.c     //比較是否不同 
      Files test01/1.c and test02/1.c differ                         //只顯示是否相同,不顯示詳細不同之處

uj5u.com熱心網友回復:

打開學習。。。。

uj5u.com熱心網友回復:

cmp
      用位元組的方式,比較兩個檔案是否存在差異,但是不保存運算結果。Cmp指令只會根據結果設定相關的標志位,這個指令之后往往會跟著一個條件跳轉指令。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      cmp  [OPTION]... FILE1  [FILE2  [SKIP1  [SKIP2]]]

2、選項串列
      -v | --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      -b | --print-bytes
            輸出不同的位元組
      -i num | --ignore-initial=num
            跳過開始的num個位元組
      -i num1 num2 | --ignore-initial=num1:num2
            第一個檔案跳過num1個位元組,第二個檔案跳過num2個位元組
      -l | --verbose
            輸出不同之處的位元組序號,以及這個位元組的值
      -n LIMIT | --bytes=LIMIT
            最多比較LIMIT位元組
      -s | --quiet | --silent
            不輸出;只輸出退出狀態

3、實體
1)直接比較 
      [root@localhost weijie]# diff -y 1.c 2.c      //首先使用diff查看不同之處
      asd       | ase
      sdf       | sdd
      dfg     dfg
      [root@localhost weijie]# cmp 1.c 2.c          //開始比較
      1.c 2.c differ: byte 3, line 1                 //只顯示第一個不同之處,第一行,第3個位元組
2)使用選項-b,顯示不同之處的位元組 
      [root@localhost weijie]# cmp -b 1.c 2.c  
      1.c 2.c differ: byte 3, line 1 is 144 d 145 e        //顯示不同的地方,第一個檔案是d,第二個檔案是e。但是這里還是只有第一個不同之處
3)使用選項-l,顯示所有不同之處 
      [root@localhost weijie]# cmp -lb 1.c 2.c       //同時使用了l 和 b選項
       3 144 d    145 e           //第一個不同之處
       7 146 f    144 d           //第二個不同之處

uj5u.com熱心網友回復:

comm
      逐行比較兩個已經排序過的檔案。結果以3列顯示:第1列顯示只在file1出現的內容,第2列顯示只在file2出現的內容,第3列顯示同時出現的內容。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      comm [OPTION]... FILE1 FILE2 

2、選項串列
      --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      -1
            不顯示第一個檔案中出現的內容
      -2
            不顯示第二個檔案出現的內容
      -3
            不顯示同時出現的內容
      --check-order
            檢查輸入是否正確排序,即使所有輸入行都已經配對
      --nocheck-order
            不檢查輸入是否正確排序
      --output-delimiter=STR
            使用STR將列分割

3、實體
1)直接比較 
      [root@localhost weijie]# diff -y 1.c 2.c        //查看兩個檔案
      abc       | abd
      def       | efg
      ghi       | ghi
      [root@localhost weijie]# comm 1.c 2.c          //比較,這兩個檔案必須已經排序
      abc
             abd
      def
             efg
             ghi
2)只顯示兩個檔案共同出現的內容 
      [root@localhost weijie]# comm -12 1.c 2.c
      ghi

uj5u.com熱心網友回復:

diffstat
      這個程式讀取diff的輸出,并顯示每個檔案的插入、洗掉和修改的直方圖。Diffstat是一個用于檢查大型復雜修補程式檔案的程式。它從包含diff輸出的一個或多個輸入檔案中讀取,生成針對參考的每個檔案更改的總行的直方圖。如果輸入檔案名以.bz 2、.gz、.lzma、.z或.z結尾,Diffstat將通過管道從相應的程式讀取未壓縮資料。它還可以根據標準輸入的管道檔案推斷壓縮型別。
      Diffstat識別來自diff的最流行的輸出型別:
      unified,修補程式首選。
      context,最好的可讀性,但不太緊湊。
      default,不是很好,但很容易產生。

      Diffstat檢測由diff輸出的行,以判斷比較了哪些檔案,然后在第一列中計數表示更改型別(插入、洗掉或修改)的標記。這些在直方圖中顯示為“、”-“和”!“字符。如果命令列上沒有指定檔案名,Diffstat將讀取標準輸入中的差異。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      diffstat  [options]  [file-specifications]

2、選項串列
      -b
            忽略diff中的“二進制檔案XXX和YYY不同”匹配的行
      -c
            在每一行輸出前加上“#”,使其成為shell腳本的注釋行。
      -D destination
            指定一個目錄,其中包含可作為應用差異的結果而參考的檔案。Diffstat將計算相應檔案中的行數(在通過-p選項調整名稱之后),以獲得每個檔案中的總行數。
      -e file
            將標準錯誤重定向到檔案
      -f format
            指定直方圖的格式:
            0,為了簡潔,它只顯示值和一個直方圖代碼insert (+),delete (-)或modify (!)。
            1,正常格式。
            2,用點填充直方圖。
            4,使用直方圖列印每個值。
            任何非零值都會給出直方圖。點和個別值可以結合在一起,例如-f6給出兩者。
      -h
            顯示幫助資訊并且退出
      -k
            禁止合并報表中的檔案名
      -l
            只列出檔案名。不生成直方圖。
      -m
            從修補程式檔案的每個“塊”中合并插入/洗掉計數,以接近修改行的計數
      -n number
            指定用于檔案名的最小寬度。如果不指定這一點,Diffstat在去掉常見前綴后使用最長檔案名的長度。
      -N number
            指定用于檔案名的最大寬度。超過此限制的名稱在左側被截斷。如果您沒有指定此選項,下面將檢查-n選項。
      -o file
            將標準輸出重定向到檔案
      -p number
            重寫洗掉公共路徑名的邏輯,模擬修補程式“-p”選項。
      -q
            抑制空差異的“0檔案更改”訊息
      -r code
            提供直方圖中顯示的資料的可選舍入,而不是通過錯誤調整截斷資料:
            0,是默認的。不執行舍入操作,但累積錯誤將添加到下列中。
            1,舍入資料。
            2,對資料進行舍入并調整直方圖,以確保在有任何差異的情況下顯示某些內容,即使這些差異通常被四舍五入為零。
      -S source
            這類似于-D選項,但指定了一個可以找到原始檔案(在應用差異之前)的位置。
      -t
            重寫直方圖,生成逗號分隔值的輸出。
      -u
            禁止對報表中的檔案名進行排序。
      -v
            顯示進度,例如,如果輸出重定向到檔案,則將進度訊息寫入標準錯誤
      -V
            顯示版本號,并且退出
      -w number
            指定直方圖的最大寬度。直方圖將永遠不會小于10列,以防檔案名過大。

3、環境變數
      Diffstat運行在可移植的UNIX環境中。您可以通過設定與輸入檔案名稱相對應的環境變數來覆寫用于解壓縮輸入檔案的程式的編譯路徑。然而,Diffstat假設生成的程式使用相同的命令列選項,例如“-c”來解壓縮到標準輸出。
      DIFFSTAT_BZCAT_PATH
      DIFFSTAT_BZIP2_PATH
      DIFFSTAT_COMPRESS_PATH
      DIFFSTAT_GZIP_PATH
      DIFFSTAT_LZCAT_PATH
      DIFFSTAT_PCAT_PATH
      DIFFSTAT_UNCOMPRESS_PATH
      DIFFSTAT_ZCAT_PATH


4、實體
統計差異資訊 
      [root@localhost wj]# diff 1.c 2.c
      1c1
      < asd
      ---
      > add
      3,4c3,4
      < dfg
      < ass
      ---
      > dsgf
      > sss
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 2
       unknown |    6 +++---..........................................................
       1 file changed, 3 insertions(+), 3 deletions(-)
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 1
       unknown |    6 +++---
       1 file changed, 3 insertions(+), 3 deletions(-)
      You have new mail in /var/spool/mail/root
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 0
       unknown |    6  3 + 3 - 0 !
       1 file changed, 3 insertions(+), 3 deletions(-)
      [root@localhost wj]# 

uj5u.com熱心網友回復:

打卡學習。。。

uj5u.com熱心網友回復:

file
      判斷指定檔案的檔案型別,它依據檔案內容判斷,并不依據擴展名。
      此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      file  [選項]  filename

2、選項串列
      -v | --version
            顯示命令版本資訊
      --help
            顯示幫助檔案
      -b | --brief
            列出結果的時候,不顯示檔案名
      -C | --compile
            撰寫一個magic.mgc輸出檔案,其中包含魔術檔案或目錄的預決議版本
      -c | --checking-printout
            以檢查魔術檔案的決議形式的列印輸出。這通常與-m標志一起使用,用于在安裝新的魔術檔案之前除錯它。
      -e | --exclude testname
            從確定檔案型別的測驗串列中排除在testname中指定的測驗。有效的測驗名稱是:
            apptype,EMX應用程式型別(僅在EMX上)。
            text,各種型別的文本檔案(此測驗將嘗試猜測文本編碼,而不管“編碼”選項的設定如何)
            encoding,用于軟魔術測驗的不同文本編碼
            tokens,在文本檔案中查找已知的令牌
            cdf,列印復合檔案檔案的詳細資訊
            compress,檢查并查看壓縮檔案
            elf,列印ELF檔案的細節。
            soft,查閱魔法檔案。
            tar,檢查tar檔案
      -F | --separator
            指定檔案名和結果之間的分隔符,默認:
      -f namefile | --files-from namefile
            從給定的檔案中,讀取檔案名,然后操作
      -h | --no-dereference
            選項導致符號鏈接不被遵循(在支持符號鏈接的系統上)。如果沒有定義環境變數POSIXLY_TRIDER,則這是默認的
      -i | --mime
            導致檔案命令輸出MIME型別字串,而不是更傳統的人類可讀的字串。因此,它可以說‘text/plain;;charset=us-ascii’而不是‘ASCII文本’。為了使此選項作業,檔案更改了它處理命令本身識別的檔案的方式(例如許多文本檔案型別、目錄等),并使用了另一個“魔術”檔案。(見下檔案案部分)
      --mime-type | --mime-encoding
            類似-i,但只列印指定的元素。
      k | --keep-going
            第一次匹配別停,繼續。隨后的匹配將具有字串‘\012-’。(如果需要換行符,請參見‘-r’選項。)
      -L | --dereference
            選項導致符號鏈接被遵循,就像ls(1)中的同名選項(在支持符號鏈接的系統上)。如果定義了環境變數POSIXLY_TRIDER,則這是默認的
      -m | --magic-file magicfiles
            指定包含魔術的檔案和目錄的備用串列。這可以是單個專案,也可以是冒號分隔的串列。如果在檔案或目錄旁邊找到已編譯的魔術檔案,則將使用它。
      -N | --no-pad
            讓檔案名在輸出中對齊
      -n | --no-buffer
            檢查每個檔案后,強迫stdout被重繪。這只有在檢查檔案串列時才有用。它用于希望從管道輸出檔案型別的程式。
      -p | --preserve-date
            在支持utime(2)或utime(2)的系統上,嘗試保留分析過的檔案的訪問時間,假裝檔案從未讀取過它們。
      -r | --raw
            不要將不可列印的字符翻譯為\ooo。通常,檔案將不可列印的字符轉換為它們的八進制表示形式
      -s | --special-files
            通常,檔案只嘗試讀取和確定STAT(2)報告是普通檔案的引數檔案的型別。這可以防止出現問題,因為讀取特殊檔案可能會產生特殊的后果。指定-s選項會導致file也讀取引數檔案,這些引數檔案是塊檔案或字符特殊檔案。這對于確定原始磁盤磁區中資料的檔案系統型別非常有用,這些磁區是塊特殊檔案。此選項還會導致檔案忽略stat(2)所報告的檔案大小,因為在某些系統上,它報告原始磁盤磁區的大小為零。
      -z | --uncompress
            試著查看壓縮檔案
      -0 | --print0
            在檔案名結束后輸出空字符‘\0’。很好地削減了產量。這不影響仍然列印的分隔符。
      -z
            嘗試讀取壓縮檔案的內容

3、說明
      file對每個引數進行測驗,試圖對其進行分類。按照這個順序執行的測驗有三組:檔案系統測驗、魔術測驗和語言測驗。成功的第一個測驗將導致列印檔案型別。列印的型別通常包含一個單詞text(該檔案只包含列印字符和幾個常見的控制字符,并可能安全地在ASCII終端上讀取)、executable (該檔案包含以某種UNIX內核可以理解的形式編譯程式的結果),或包含任何其他含義的data(資料通常是“二進制”或不可列印的)。例外是眾所周知的包含二進制資料的檔案格式(核心檔案、tar存檔).在修改魔術檔案或程式本身時,請確保保留這些關鍵字。用戶依賴于知道目錄中的所有可讀檔案都列印了單詞“text”。不要像Berkeley那樣,把“shell命令文本”改為“shell腳本”
      檔案系統測驗基于檢查STAT(2)系統呼叫的回傳。該程式檢查該檔案是否為空檔案,或是否為某種特殊檔案。如果在系統頭檔案中定義了適合您正在運行的系統的任何已知檔案型別(套接字、符號鏈接或有名管道),則會直觀地顯示它們。
      魔術測驗用于檢查具有特定固定格式的資料的檔案。這方面的典型示例是二進制可執行檔案(已編譯的程式)a.out檔案,其格式在標準include目錄中的#include<a.out.h>中定義,或者#include <exec.h>。這些檔案具有一個“魔術號”,存盤在檔案開頭附近的某個特定位置,該位置告訴UNIX作業系統該檔案是二進制可執行檔案,以及其中的幾種型別中的哪一種。“魔術”的概念已經通過擴展應用于資料檔案。任何在一個小的固定偏移量處具有一些不變識別符號的檔案通常都可以用這種方式來描述。標識這些檔案的資訊是從已編譯的魔術檔案/usr/share/misc/magic.mgc中讀取的,如果編譯的檔案不存在,則從/usr/share/misc/magc目錄中讀取這些檔案。此外,如果$HOME/.magic.mgc或$home/.magic存在,則它將優先用于系統魔術檔案。如果/etc/magic存在,它將與其他魔術檔案一起使用。
      如果檔案與魔術檔案中的任何條目不匹配,則檢查它是否為文本檔案。ASCII、ISO-8859-x、非ISO 8位擴展-ASCII字符集(例如在Macintosh和IBM PC系統上使用的字符集)、UTF-8編碼Unicode、UTF-16編碼Unicode和EBCDIC字符集可以通過構成每組可列印文本的不同范圍和位元組序列來區分。如果一個檔案通過了這些測驗中的任何一個,就會報告它的字符集。ASCII、ISO-8859-x、UTF-8和Extended-ASCII檔案被識別為“Text”,因為它們在幾乎任何終端上都是可讀的;UTF-16和EBCDIC僅僅是“字符資料”,因為它們包含文本,但是文本需要翻譯才能被讀取。此外,檔案將試圖確定文本型別檔案的其他特征.如果檔案的行被CR、CRLF或Nel終止,而不是Unix標準LF,這將被報告。還將識別包含嵌入轉義序列或過度醒目的檔案。
      一旦檔案確定了在文本型別檔案中使用的字符集,它將試圖確定該檔案是用哪種語言撰寫的。語言測驗尋找特定的字串(Cf. #include<names.h>),它可以出現在檔案的前幾個塊中的任何地方。例如,關鍵字.br表示檔案很可能是troff(1)輸入檔案,正如關鍵字struct表示C程式一樣。這些測驗不如前兩組可靠,因此它們是最后執行的。語言測驗例程還測驗一些混類(例如tar(1)存檔)。
      任何無法標識為已在上述任何字符集中寫入的檔案,都被簡單地稱為“data”。

4、環境變數
      環境變數MAGIC可以用來設定默認的魔術檔案名。如果設定了該變數,那么檔案將不會嘗試打開$HOME/.magic。檔案酌情將‘.mgc’添加到此變數的值中。環境變數POSIXLY_RIDER控制(在支持符號鏈接的系統上),檔案是否會嘗試遵循符號鏈接。如果設定了,那么檔案將遵循符號鏈接,否則就不會。這也是由-l和-h選項控制的。

5、回傳值
      檔案在成功時回傳0,在錯誤時回傳非零。如果檔案運算元命名的檔案不存在,無法讀取,或者無法確定由檔案運算元命名的檔案的型別,則不認為這是影響退出狀態的錯誤。

6、檔案
      /usr/share/misc/magic.mgc,默認已編譯魔術串列。
      /usr/share/misc/magic,包含默認魔術檔案的目錄。

7、實體
1)直接查看檔案 
      [root@localhost weijie]# file 1.c
      1.c: ASCII text         //默認分隔符是冒號
      [root@localhost weijie]# file -F , 1.c         //指定分隔符為逗號
      1.c, ASCII text
2)從給定檔案中讀取檔案名,然后進行操作 
      [root@localhost weijie]# cat 1.c
      2.c
      3.c

      [root@localhost weijie]# file -f 1.c         //從1.c讀取檔案內容,將他們作為檔案名重新進行file操作。
      2.c: ASCII text
      3.c: ASCII text
3)讀取特殊檔案的型別

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/64772.html

標籤:系統維護與使用區

上一篇:Twilio短信通道白名單申請流程

下一篇:linux

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more