1. 程式人生 > >Linux 系統常用管理命令(精簡筆記)

Linux 系統常用管理命令(精簡筆記)

Linux是一套免費使用和自由傳播的類Unix作業系統,下面的筆記是我從鳥菜中摘抄出來的重要命令,並進行了一定的排版,摒棄了一些用不到的亂七八糟的命令,目的是在生產環境中能夠快速的定位並查詢需要命令的引數,能夠高效工作.

檔案目錄基本命令

檔案基本操作命令

顯示目錄或檔案: 顯示目標列表,在Linux系統中是使用率較高的命令.ls命令的輸出資訊可以進行彩色加亮顯示,以分割槽不同型別的檔案

[root@localhost ~]# ls --help

命令語法:[ ls [選項] 檔案或目錄 ]

        -a              #顯示所有檔案,包括隱藏檔案,連同.與..的檔案也列出來
        -A              #顯示所有檔案,包括隱藏檔案,但不列出.與..
        -d              #僅列出目錄
        -f              #直接列出結果不排序
        -h              #檔案大小顯示為B KB MB
        -i              #列出檔案的Inode號
        -l              #以長格式顯示
        -n              #列出uid與gid
        -S              #以檔案容量大小排序(大檔案在前小檔案在後)
        -t              #以時間大小排序(大日期在前小日期在後)
        -r              #將排序結果反向輸出
        -R              #遞迴顯示目錄以及子目錄
        -Z              #列出SELinux安全上下文
        --full-time     #列出檔案詳細時間
        --time=atime/ctime/mtime        #列出指定時間

使用 ls -lh 引數查詢所在目錄詳細資訊

[root@localhost ~]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark

第1項:          檔案許可權位
第2項:          引用計數(檔案:硬連結數 目錄:目錄下的子目錄個數)
第3項:          檔案的所有者(屬主->此處為root)
第4項:          檔案的所屬組(屬組->此處為root)
第5項:          檔案大小(預設單位位元組byte)
第6項:          最後一次修改時間
第7項:          檔名

使用 ls -lh --full-time 顯示檔案建立的詳細時間資訊

[root@localhost ~]# ls -h --full-time
total 0
-rw-r--r--. 1 root root 0 2018-11-13 09:36:25.172274787 -0500 admin
drwxr-xr-x. 2 root root 6 2018-11-13 09:36:13.292275532 -0500 lyshark

使用 ls -lhS 顯示檔案,並按照檔案由大到小列印

[root@localhost ~]# ls -lhS
total 0
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin

使用 ls -lhrS 顯示檔案,並按照檔案由小到大列印

[root@localhost ~]# ls -lhrS
total 0
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark

使用 ls -lZ 顯示檔案,並顯示SeLinux安全上下文

[root@localhost ~]# ls -lZ 
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 admin
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 lyshark

目錄跳轉與切換: 切換當前的哦工作目錄

[root@localhost ~]# cd --help

命令語法:[ cd [選項] 目錄 ]

        cd              #進入使用者主目錄
        cd ~            #進入使用者主目錄
        cd -            #返回進入此目錄之前所在的目錄
        cd ..           #返回上級目錄
        cd ../..        #返回上兩級目錄
        cd !$           #把上個命令的引數作為cd引數使用

使用 cd ~ or cd 切換到使用者家目錄

[root@localhost etc]# pwd
/etc

[root@localhost etc]# cd

[root@localhost ~]# pwd
/root

使用 cd .. 切換上一級目錄裡去

[root@localhost ~]# pwd
/root

[root@localhost ~]# cd ..

[root@localhost /]# pwd
/

使用 cd ../.. 切換上兩級目錄裡去

[root@localhost sysconfig]# pwd
/etc/sysconfig

[root@localhost sysconfig]# cd ../..

[root@localhost /]# pwd
/

建立新目錄: mkdir命令用來建立一個新目錄,或者遞迴建立一些目錄。

[root@localhost ~]# mkdir --help

語法格式:[ mkdir [選項] 新目錄名 ]

        -v              #顯示建立過程
        -p              #遞迴建立目錄
        -Z              #設定安全上下文
        -m              #建立目錄時同時設定許可權

使用 mkdir -p 遞迴建立目錄

[root@localhost ~]# mkdir -p /tmp/lyshark/lyshark

[root@localhost ~]# ls -lh /tmp/lyshark/
total 0
drwxr-xr-x. 2 root root 6 Nov 13 09:56 lyshark

使用 mkdir -m 建立目錄時同時設定許可權.

[root@localhost ~]# mkdir -m 000 lyshark

[root@localhost ~]# ls -lh
total 0
d---------. 2 root root 6 Nov 13 10:02 lyshark

建立空檔案: touch命令用於建立空檔案按,或者把已存在檔案的時間標籤更新為系統當前的時間。

[root@localhost ~]# touch --help

語法格式:[ touch [選項] 檔名 ]

        -a              #修改訪問時間
        -c              #修改檔案時間,若檔案不存在則不建立新檔案
        -m              #僅修改mtime
        -t              #修改檔案時間(touch -t 1806101012)

使用 touch 命令在當前目錄下建立一個空檔案lyshark.txt.

[root@localhost ~]# ls -lh
total 0

[root@localhost ~]# touch lyshark.txt

[root@localhost ~]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Nov 13 10:32 lyshark.txt

使用 touch -t 命令修改檔案的時間改成15年11月03日11點59分.

[root@localhost ~]# ls -lh --full-time
total 0
-rw-r--r--. 1 root root 0 2018-11-13 10:35:50.639051120 -0500 lyshark.txt

[root@localhost ~]# touch -t 1511031159 lyshark.txt 

[root@localhost ~]# ls -lh --full-time
total 0
-rw-r--r--. 1 root root 0 2015-11-03 11:59:00.000000000 -0500 lyshark.txt

複製檔案或目錄: cp命令用來將一個或多個原始檔或者目錄複製到指定的目的檔案或目錄。

[root@localhost ~]# cp --help

語法格式:[ cp [選項] 原始檔或目錄 目標目錄 ]

        -a              #相當於pdr
        -d              #連同連結檔案的屬性一起復制
        -f              #強制複製
        -i              #如目標檔案已存在,則覆蓋時詢問
        -p              #連同檔案屬性一起復制(備份常用)
        -r              #遞迴複製,用於目錄的複製
        -s              #複製時建立軟連線
        -u              #原始檔更新時才會提示覆制

使用 cp -a 命令實現檔案拷貝,將/etc/的檔案拷貝到/tmp/目錄下.

[root@localhost ~]# cp -a /etc/* /tmp/

[root@localhost ~]# ls -lh /tmp/
total 1.1M
-rw-r--r--.  1 root root     16 Oct 13 12:37 adjtime
-rw-r--r--.  1 root root   1.5K Jun  7  2013 aliases
-rw-r--r--.  1 root root    12K Oct 13 12:39 aliases.db
drwxr-xr-x.  2 root root    236 Oct 13 12:34 alternatives
....省略....

使用 cp -s 命令實現拷貝檔案,將/etc/passwd建立軟連結到/tmp/目錄下.

[root@localhost ~]# cp -s /etc/passwd /tmp/

[root@localhost ~]# ls -lh /tmp/
total 0
lrwxrwxrwx. 1 root root 11 Nov 13 10:09 passwd -> /etc/passwd

使用 cp -a 命令實現一次拷貝多個檔案,到/tmp/目錄下.

[root@localhost ~]# cp -a /etc/passwd /etc/shadow /tmp/

[root@localhost ~]# ls -lh /tmp/
total 8.0K
-rw-r--r--. 1 root root 898 Oct 13 12:37 passwd
----------. 1 root root 714 Oct 13 12:37 shadow

移動檔案或目錄: mv命令用來對檔案或目錄重新命名,如果檔案存在則會強制更新。

[root@localhost ~]# mv --help

語法格式:[ mv [選項] 原始檔或目錄 目標目錄 ]

        -f              #強制移動
        -i              #以互動方式移動
        -u              #原始檔更新才會移動

使用 mv 命令實現將/etc/passwd移動到/tmp目錄下.

[root@localhost ~]# mv /etc/passwd /tmp/

[root@localhost ~]# ls -lh /tmp/
total 4.0K
-rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd

使用 mv 命令實現一次移動多個檔案,下面將/etc/passwd和/etc/shadow 移動到/tmp目錄下.

[root@localhost ~]# mv /etc/passwd /etc/shadow /tmp/

[root@localhost ~]# ls -lh /tmp/
total 8.0K
-rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd
----------. 1 0 root 714 Oct 13 12:37 shadow

使用 mv 命令實現重新命名,將當前目錄下的lyshark改名為linux.

[root@localhost ~]# ls -lh
total 0
drwxr-xr-x. 2 root root 6 Nov 13 10:19 lyshark

[root@localhost ~]# mv lyshark/ linux

[root@localhost ~]# ls -lh
total 0
drwxr-xr-x. 2 root root 6 Nov 13 10:19 linux

刪除檔案或目錄: rm命令可以刪除一個目錄中的一個或多個檔案或目錄,也可以將某個目錄及其下屬的所有檔案及其子目錄均刪除掉.

[root@localhost ~]# rm --help

語法格式:[ rm [選項] 檔案或目錄 ]

        -f              #不提示警告資訊,直接刪除
        -r              #遞迴刪除
        -i              #刪除前提示
        -fr             #常用搭配

使用 rm -fr 命令刪除當前目錄下的linux目錄.

[root@localhost ~]# ls
linux
[root@localhost ~]# rm -fr linux/
[root@localhost ~]# ls

使用 rm -fr * 命令使用萬用字元,刪除指定資料夾內的所有檔案.

[root@localhost lyshark]# ls
1  10  2  3  4  5  6  7  8  9

[root@localhost lyshark]# rm -fr *
[root@localhost lyshark]# ls

判斷檔案的型別: file命令用來檢測給定檔案的型別,file命令對檔案的檢查分為檔案系統、魔法幻數檢查和語言檢查3個過程

[root@localhost ~]# file --help

語法格式:[ file [選項] 檔案或目錄 ]

        -b              #列出辨識結果時,不顯示檔名稱
        -c              #詳細顯示指令執行過程
        -f 檔名        #在檔案中一次讀取並判斷格式
        -z              #查詢壓縮包資訊

使用 file 命令判斷/etc/passwd 和 /bin/bash 檔案的格式.

[root@localhost ~]# file /etc/passwd
/etc/passwd: ASCII text

[root@localhost ~]# file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped

使用 file -z 命令讀取lyshark.tar.gz壓縮包檔案屬性.

[root@localhost ~]# ls -lh
total 9.4M
-rw-r--r--. 1 root root 9.4M Nov 13 10:51 lyshark.tar.gz

[root@localhost ~]# file -z lyshark.tar.gz 
lyshark.tar.gz: POSIX tar archive (GNU) ,
(gzip compressed data, from Unix, last modified: Tue Nov 13 10:51:13 2018)

使用 file -f 命令在檔案中讀取指定行,並依次判斷檔案.

[root@localhost ~]# cat temp 
/etc/passwd
/etc/shadow
/bin/bash
/bin/ls

[root@localhost ~]# file -f temp 
/etc/passwd: ASCII text
/etc/shadow: ASCII text

/bin/bash:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.32, 
BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped

/bin/ls:     ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.32, 
BuildID[sha1]=ec3f3e5e8160c9917e8a4b896fe9044748472991, stripped

查詢檔案狀態: stat命令用於顯示檔案的狀態資訊,stat命令的輸出資訊比ls命令的輸出資訊要更詳細。

[root@localhost ~]# stat --help

語法格式:[ stat [選項] 檔案或目錄 ]

        -L              #支援符號連線
        -f              #顯示檔案系統狀態而非檔案狀態
        -t              #以簡潔方式輸出資訊

使用 stat 命令查詢/bin/bash檔案的相信資訊.

[root@localhost ~]# stat /bin/bash
  File: ‘/bin/bash’
  Size: 964544      Blocks: 1888       IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 50340311    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:shell_exec_t:s0
Access: 2018-11-13 09:33:12.197999579 -0500
Modify: 2017-09-26 09:14:20.000000000 -0400
Change: 2018-10-13 12:32:43.377997461 -0400
 Birth: -

使用 stat -f 命令顯示系統的狀態資訊.

[root@localhost ~]# stat -f /bin/bash
  File: "/bin/bash"
    ID: fd0000000000 Namelen: 255     Type: xfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 4452864    Free: 4155020    Available: 4155020
Inodes: Total: 8910848    Free: 8877953

建立連結檔案: ln命令用來為檔案創件連線,既可以建立軟連線也可以建立硬連結。

[root@localhost ~]# ln --help

語法格式:[ stat [選項] 檔案或目錄 ]

        -L              #支援符號連線
        -d              #建立目錄的硬連結
        -f              #強制建立連結
        -i              #覆蓋前詢問
        -s              #建立一個軟連結

使用 ln 命令建立一個硬連結.

[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# ln bash bash_ln
[root@localhost ~]# ls -lhi
total 1.9M
33844798 -rwxr-xr-x. 2 root root 942K Sep 26  2017 bash
33844798 -rwxr-xr-x. 2 root root 942K Sep 26  2017 bash_ln

使用 ln -s 命令建立一個軟連結.

[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# ln -s bash bash_link
[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26  2017 bash
33959316 lrwxrwxrwx. 1 root root    4 Nov 13 11:06 bash_link -> bash

檔案內容查閱命令

文字列印命令: cat 檔案列印滾屏命令,控制引數輸出。

[root@localhost ~]# cat --help

語法格式:[ cat [選項] 檔名 ]

        -b              #列出行號,空白行不標號
        -E              #將結尾段行符$顯示出來
        -T              #將Tab鍵以^I顯示出來
        -n              #打印出行號

使用 cat -n 命令給指定文字標號並列印.

[root@localhost ~]# cat -n /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
....省略....

使用 cat -E 命令顯示文字結束符$.

[root@localhost ~]# cat -E /etc/passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
daemon:x:2:2:daemon:/sbin:/sbin/nologin$
adm:x:3:4:adm:/var/adm:/sbin/nologin$
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
sync:x:5:0:sync:/sbin:/bin/sync$
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$
....省略....

顯示開頭文字: head命令用於顯示檔案的開頭的內容,在預設情況下,head命令顯示檔案的頭10行內容

[root@localhost ~]# head --help

語法格式:[ head [選項] 檔名 ]

        -c 10           #顯示前10個字元
        -n 10           #顯示前10行
        -v              #總是顯示檔名的頭資訊
        -q              #不顯示檔名的頭資訊

使用 head -c 命令顯示文字的前20個字元.

[root@localhost ~]# head -c 20 /etc/passwd
root:x:0:0:root:/roo

[root@localhost ~]# 

使用 head -n 命令顯示文字前3行.

[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

顯示結尾文字: tail命令用於輸入檔案中的尾部內容,tail命令預設在螢幕上顯示指定檔案的末尾10行

[root@localhost ~]# tail --help

語法格式:[ tail [選項] 檔名 ]

        -c 10           #顯示後10個字元
        -n 10           #顯示檔案後10行
        -f              #持續監測檔案後面的變化
        --pid=PID       #與-f合用,表示在程序ID,死掉之後結束

使用 tail -n 命令顯示文字後3行.

[root@localhost ~]# tail -n 3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
lyshark:x:1000:1000:lyshark:/home/lyshark:/bin/bash

使用 tail -f 命令動態監控一個檔案.

[root@localhost ~]# tail -f /var/log/messages 
Nov 13 10:01:01 localhost systemd: Starting Session 3 of user root.
Nov 13 10:10:54 localhost kernel: e1000: ens32 NIC Link is Down
Nov 13 10:10:58 localhost kernel: e1000: ens32 NIC Link is Up 
Nov 13 10:10:58 localhost NetworkManager[772]: <info>  
....省略....

使用 tail --pid=PID 命令監視一個程序.

[root@localhost ~]# ps
   PID TTY          TIME CMD
  1404 pts/0    00:00:00 bash
 11441 pts/0    00:00:00 ps
[root@localhost ~]# 
[root@localhost ~]# tail --pid=1401
tail: warning: PID ignored; --pid=PID is useful only when following
....省略....

使用 tail -n +5 命令從第五行以後開始列印.

[root@localhost ~]# tail -n +5 /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
....省略....

使用 tail -n +5 | head -n 3 命令從第五行開始列印,向下列印2行內容.

[root@localhost ~]# tail -n +5 /etc/passwd |head -n 3
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

指定格式輸出文字: nl命令讀取file引數預設情況下標準輸入,計算輸入中的行號,將計算過的行號寫入標準輸出.

[root@localhost ~]# nl --help

語法格式:[ nl [選項] 檔名 ]

        -c 10           #顯示後10個字元
        -b a            #列出行號,包括空格(類似 cat -n)
        -b t            #列出行號,不包括空格(類似 cat -n)
        -n ln           #行號顯示在最左邊
        -n rn           #行號顯示在最右邊
        -n rz           #行號顯示在最右邊,並加0補齊
        -w              #指定補齊0的個數

使用 nl -b a 命令給文字標號列印(類似於cat -n).

[root@localhost ~]# nl -b a /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
....省略....

使用 nl -b a -n rz 命令列出文字並給予編號,空格0填充.

[root@localhost ~]# nl -b a -n rz /etc/passwd
000001  root:x:0:0:root:/root:/bin/bash
000002  bin:x:1:1:bin:/bin:/sbin/nologin
000003  daemon:x:2:2:daemon:/sbin:/sbin/nologin
000004  adm:x:3:4:adm:/var/adm:/sbin/nologin
000005  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
....省略....

使用 nl -b a -n rz -w 3 命令列出文字並給予編號,編號填充2行0.

[root@localhost ~]# nl -b a -n rz -w 3 /etc/passwd
001 root:x:0:0:root:/root:/bin/bash
002 bin:x:1:1:bin:/bin:/sbin/nologin
003 daemon:x:2:2:daemon:/sbin:/sbin/nologin
004 adm:x:3:4:adm:/var/adm:/sbin/nologin
005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
....省略....

非純文字檔案列印: od用於輸出檔案的八進位制、十六進位制或其它格式編碼位元組,此命令主要用來檢視儲存在二進位制檔案中的值.

[root@localhost ~]# od --help

語法格式:[ od [選項] 檔名 ]

        -t a            #利用預設字元來輸出
        -t c            #使用ASCII字元輸出
        -t d            #使用十進位制輸出
        -t f            #使用浮點數輸出
        -t o            #使用八進位制輸出
        -t x            #使用十六進位制輸出

使用 od -t a 命令使用預設格式輸出.

[root@localhost ~]# od -t a /bin/cd 
0000000   #   !   /   b   i   n   /   s   h  nl   b   u   i   l   t   i
0000020   n  sp   c   d  sp   "   $   @   "  nl
0000032

使用 od -t c 命令使用ASCII輸出.

[root@localhost ~]# od -t c /bin/cd 
0000000   #   !   /   b   i   n   /   s   h  \n   b   u   i   l   t   i
0000020   n       c   d       "   $   @   "  \n
0000032

使用 od -t x 命令輸出二進位制檔案的十六進位制。

[root@localhost ~]# od -t x /bin/cd
0000000 622f2123 732f6e69 75620a68 69746c69
0000020 6463206e 40242220 00000a22

翻頁瀏覽文字: more/less命令都是文字翻閱檢視命令。

[root@localhost ~]# more --help

語法格式:[ more 檔名 ]

        空格            #像下翻一頁
        B               #向上翻一頁
        Enter           #向下滾動一行
        /字串          #向下查詢字串
        :f              #立即顯示行號
        q或Q            #退出
[root@localhost ~]# less --help

語法格式:[ less [選項] 檔名 ]

        -e              #檔案顯示完成後自動退出
        -f              #強制顯示檔案
        -l              #搜尋時忽略大小寫的差異
        -N              #每一行行首顯示行號

        空格             #向下翻動一頁
        [pageup]        #向上翻動一頁
        /字串          #向下查詢字串
        ?字串          #向上查詢字串
        q               #退出

檔案打補丁: 給指定的配置檔案打補丁,通過對比生成差異檔案,並打入補丁.

[root@localhost ~]# diff --help

語法格式:[ diff [選項] 原始檔 新檔案 > *.patch ]

        -a          #將任何文件當做文字文件處理
        -b          #忽略空格造成的不同
        -B          #忽略空白行造成的不同
        -I          #忽略大小寫造成的不同
        -N          #當比較目錄時,若某個檔案只在一個目錄中,則另一個目錄中視作空檔案
        -r          #當比較目錄時,遞迴比較子目錄
        -u          #使用同一的輸出格式

[root@localhost ~]# diff -Naur /root/old /root/new > lyshark.patch #生成補丁檔案
[root@localhost ~]# patch -p2 old < lyshark.patch                  #追加打補丁

檔案目錄查詢命令

查命令絕對路徑: which用於查詢並顯示給定命令的絕對路徑,環境變數中PATH引數也可以被查出來。

[root@localhost ~]# which bash
/usr/bin/bash

[root@localhost ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

尋找特定檔案: whereis命令用來定位指令的二進位制程式、原始碼檔案和man手冊頁等相關檔案的路徑,該命令只能用於程式名的搜尋

[root@localhost ~]# whereis --help

語法格式:[ whereis [選項] 檔名 ]

        -b              #只找二進位制檔案
        -m              #只找man文件
        -s              #只找原始碼

使用 whereis -b 命令找二進位制檔案,與幫助手冊。

[root@localhost ~]# whereis -b ifconfig
ifconfig: /usr/sbin/ifconfig

[root@localhost ~]# whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz

快取查詢檔案: locate 搜尋一個數據庫/var/lib/mlocatedb,這個資料庫中含有本地所有檔案資訊,Linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的檔案,為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新資料庫,updatedb命令會根據/etc/updatedb.conf來更新檔案.

[root@localhost ~]# yum install -y mlocate
[root@localhost ~]# locate --help

語法格式:[ locate [選項] 檔名 ]

        -d 目錄        #指定資料庫所在的目錄
        -i             #忽略大小寫差異
        -r             #後面接正則表示式

使用 locate 命令查詢一個檔案.

[root@localhost ~]# updatedb 
[root@localhost ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-

高階檔案查詢命令

遍歷檔案查詢: find 命令可以說是最重要的查詢命令了,該命令引數較多。

[root@localhost ~]# find --help

語法格式:[ find [目錄] [屬性] 檔名 ]

        -name         #按檔名查詢
        -size         #根據大小查詢
        -user         #根據屬主查詢
        -perm         #根據許可權查詢
        -type         #根據型別查詢
        -time         #按時間查詢
        -inum         #根據i節點查詢
        -exec         #查詢後執行命令

-name 按檔名查詢:

常用查詢萬用字元

\*     #匹配任意一個或多個字元
?     #匹配任意一個字元
[]     #指定範圍,外側加引號

查詢/var/目錄下,以.log結尾的檔案.

[root@localhost ~]# find /var/ -name "*.log"
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
....省略....

查詢/root/目錄下,以[1-3之間],結尾是.txt的檔案

[root@localhost ~]# ls
1.txt  2.txt  3.txt  Catalog  File

[root@localhost ~]# find /root/ -name "[1-3].txt"
/root/1.txt
/root/2.txt
/root/3.txt

查詢/etc/目錄下,開頭是6個任意字元的檔案

[root@localhost ~]# find /etc/ -name "??????"
/etc/grub.d
/etc/grub.d/README
/etc/shells
/etc/init.d
....省略....

-size 根據大小查詢

單位是 block 資料塊  一塊是512位元組
1M -> 1024k -> 2048 塊  (1塊是0.5k 也就是512位元組)
100M -> 102400k -> 204800塊

查詢/etc/目錄下,小於10k的檔案

root@localhost ~]# find /etc/ -size -10k
/etc/crypttab
/etc/.pwd.lock
/etc/environment
....省略....

查詢/etc/目錄下,大於1M的檔案

[root@localhost ~]# find /etc/ -size +1M   #查詢大於1M的檔案
/etc/udev/hwdb.bin
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31
....省略....

#注意:+-號如果沒有,是精確到這麼大,通常都會帶上+或-號表示一個範圍.

-user 根據屬主與許可權查詢

在/root目錄中查詢屬於wang使用者的檔案

[root@localhost ~]# find /root/ -user wang
/root/1.txt
/root/2.txt
/root/3.txt
#注意:系統中要存在該使用者,否則會報錯誤.

查詢/boot/目錄中許可權是644的檔案

[root@localhost ~]# find /boot/ -perm 0644
/boot/grub2/device.map
/boot/grub2/i386-pc/gcry_rmd160.mod
/boot/grub2/i386-pc/acpi.mod
/boot/grub2/i386-pc/gcry_rsa.mod
....省略....

-type 根據型別查詢

-type f 二進位制檔案(普通檔案)
-type l 軟連結檔案
-type d 目錄

查詢/usr/bin/目錄下,型別是二進位制檔案.

[root@localhost ~]# find /usr/bin/ -type f
/usr/bin/cp
/usr/bin/gzip
/usr/bin/alias
/usr/bin/csplit
/usr/bin/bash
....省略....

-time 按時間查詢

按天數   ctime  atime  mtime
按分鐘   cmin   amin     mmin

  c  change   #表示屬性被修改過:所有者、所屬組、許可權
  a  access   #被訪問過(被檢視過)
  m  modify   #表示內容被修改過

查詢/etc/目錄下,在120分鐘以內,內容被修改過的檔案

[root@localhost ~]# find /etc/ -mmin -120
/etc/
/etc/resolv.conf
/etc/group-
/etc/gshadow-
/etc/group
/etc/gshadow
....省略....

查詢/etc/目錄下,在7天之前,屬性被修改過的檔案

[root@localhost ~]# find /etc/ -ctime +7
/etc/resolv.conf
/etc/group-
/etc/gshadow-
....省略....

-inum 根據i節點查詢

有一些檔案的硬連結數量很多,有相同的i節點,查詢其中一個檔案的i節點號,一次性刪除。

[root@localhost ~]# find ./ -inum 1024 -exec rm{} \;   #刪除相同I節點的資料

-and or 邏輯連線符

-a    (and 邏輯與)     
-o    (or  邏輯或)

在/etc/目錄下,查詢大於1k,並且小於10k的檔案

[root@localhost ~]# find /etc/ -size +1k -a -size -10k
/etc/
/etc/grub.d/00_header
/etc/grub.d/20_ppc_terminfo
/etc/grub.d/00_tuned
/etc/rc.d/init.d/README
/etc/rc.d/init.d/netconsole
/etc/rc.d/init.d/network
/etc/pam.d
....省略....

-exec 命令執行連線符

[查詢格式] find  ...  -exec 命令 {}  \;

{}        #表示find查詢的結果集
\         #是轉義符,不使用命令別名,直接使用命令本身
;         #分號是表示語句的結束.

#注意:固定格式,只能這樣寫.注意中間的空格.

-----------------------------------------------------------------
說明: 轉義符的作用是什麼?

在linux中有一個別名機制,如rm刪除檔案,執行的卻是rm -i(用which rm 可以檢視命令別名),
使用rm刪除檔案前會提示,就是因為rm -i這個引數。如果想使用命令原意,可以在加\轉義,
如:\rm test.txt   則不會提示,直接刪除

查詢/var/log/目錄下名字以.log結尾的檔案,找到後執行 ls -l 顯示詳細資訊.

[root@localhost ~]# find /var/log/ *.log -exec ls -l {} \;
total 1176
drwxr-xr-x. 2 root   root      204 Sep 18 09:12 anaconda
drwx------. 2 root   root       23 Sep 18 09:12 audit
-rw-------. 1 root   root    53001 Sep 19 00:57 boot.log
-rw-------. 1 root   utmp      384 Sep 18 09:22 btmp
drwxr-xr-x. 2 chrony chrony      6 Apr 12 13:37 chrony
-rw-------. 1 root   root     3523 Sep 19 01:01 cron
-rw-r--r--  1 root   root   119414 Sep 19 00:57 dmesg
-rw-r--r--  1 root   root   119599 Sep 18 23:35 dmesg.old
-rw-r--r--. 1 root   root     1320 Sep 19 00:23 firewalld
-rw-r--r--. 1 root   root      193 Sep 18 09:05 grubby_prune_debug
....

查詢/etc/目錄下名字以"init*"開頭的檔案,找到後,只列出檔案,過濾掉目錄,並執行 ls -l 顯示詳細資訊.

[root@localhost ~]# find /etc/ -name "init*" -a -type f -exec ls -l {} \;

-rw-r--r--. 1 root root 511 Apr 11 01:09 /etc/inittab
-rw-r--r--. 1 root root 798 Apr 11 01:09 /etc/sysconfig/init
-rwxr-xr-x. 1 root root 5419 Jan  2  2018 /etc/sysconfig/network-scripts/init.ipv6-global
-rw-r--r--. 1 root root 30 Apr 11 14:12 /etc/selinux/targeted/contexts/initrc_context

查詢/tmp/下,的yum.log檔案,找到後直接刪除.

[root@localhost tmp]# find /tmp/ -name yum.log -exec rm {} \;
[root@localhost tmp]#

查詢根下,找關於lyshark使用者的所有檔案,找到後直接刪除.

[root@localhost ~]# find / -user lyshark -exec rm -r {} \;

find: ‘/proc/1465/task/1465/fd/6’: No such file or directory
find: ‘/proc/1465/task/1465/fdinfo/6’: No such file or directory
find: ‘/proc/1465/fd/5’: No such file or directory
find: ‘/proc/1465/fdinfo/5’: No such file or directory
find: ‘/root/Catalog’: No such file or directory
find: ‘/home/lyshark’: No such file or directory

#rm -r 連帶目錄一起刪除.報錯原因:-exec 不適合大量傳輸,速率慢導致.

在根下,查詢lyshark使用者的檔案,找到後刪除,刪除前會提示是否刪除.

[root@localhost ~]# find / -user lyshark -ok rm -r {} \;
find: ‘/proc/1777/task/1777/fd/6’: No such file or directory
find: ‘/proc/1777/task/1777/fdinfo/6’: No such file or directory

< rm ... /root/LyShark > ? y

# -ok的使用和-exec是一樣的,區別是-ok,執行時會提示你是否進行下一步操作.

檔案目錄壓縮命令

compress壓縮: compress是個歷史悠久的壓縮程式,檔案經它壓縮後,其名稱後面會多出 ".Z" 的副檔名。

[root@localhost ~]# yum install -y ncompress
[root@localhost ~]# compress --help

命令語法:[ compress [選項] 檔案或目錄 ]

        -f              #強制覆蓋掉目標檔案
        -c              #將結果送到標準輸出,無檔案被改變
        -r              #遞迴的操作方式
        -b 數字         #壓縮效率是一個介於9~16
        -d              #對檔案進行解壓縮而非壓縮
        -v              #顯示指令執行過程

通過使用compress -c命令壓縮一個檔案.

[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# compress -c bash > bash.Z

[root@localhost ~]# ls -lh
total 1.6M
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z

通過使用compress -d命令解壓一個檔案.

[root@localhost ~]# ls -lh
total 596K
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z

[root@localhost ~]# compress -d bash.Z

[root@localhost ~]# ls -lh
total 944K
-rw-r--r--. 1 root root 942K Nov 16 06:38 bash

zip壓縮: zip命令壓縮的拓展名.zip 各種系統都支援zip的壓縮格式,所以在一定程度上,是可以通用的.

[root@localhost ~]# yum install -y zip unzip
[root@localhost ~]# zip --help

命令語法:[ zip/unzip [選項] 檔案或目錄 ]

        -r              #遞迴壓縮,連同子目錄一同壓縮
        -S              #包含系統和隱藏檔案
        -v              #顯示指令執行過程
        -q              #不顯示指令執行過程

通過使用zip -r -v命令將/etc/目錄全部內容壓縮.

[root@localhost ~]# zip -r -v lyshark.zip /etc/

[root@localhost ~]# ls -lh
total 12M
-rw-r--r--. 1 root root 12M Nov 16 09:46 lyshark.zip

使用unzip -l命令查詢一個壓縮包中的檔案.

[root@localhost ~]# unzip -l lyshark.zip

使用unzip -d命令將檔案解壓到指定目錄.

[root@localhost ~]# unzip lyshark.zip -d /tmp/

[root@localhost ~]# ls -lh /tmp/
total 12K
drwxr-xr-x. 84 root root 8.0K Nov  6 11:02 etc

gzip壓縮: gzip是Linux系統預設支援的壓縮格式,其可以與tar命令結合使用,gzip對文字檔案有60%~70%的壓縮率。

[root@localhost ~]# gzip --help

命令語法:[ gzip/zcat [選項] 檔案或目錄 ]

        -a              #使用ASCII文字模式
        -d              #解開壓縮檔案
        -f              #強行壓縮檔案
        -l              #列出壓縮檔案的相關資訊
        -n              #壓縮時,不儲存原來的檔名稱及時間戳
        -N              #壓縮時,儲存原來的檔名稱及時間戳
        -q              #不顯示警告資訊
        -r              #遞迴處理
        -v              #顯示指令執行過程

通過使用gzip -rv命令壓縮一個檔案.

[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# gzip -rv bash
bash:    51.2% -- replaced with bash.gz

[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26  2017 bash.gz

通過使用gzip -l/zcat -l命令查詢一個檔案.

[root@localhost ~]# gzip -l bash.gz

         compressed        uncompressed  ratio uncompressed_name
             470300              964544  51.2% bash

[root@localhost ~]# zcat -l bash.gz
         compressed        uncompressed  ratio uncompressed_name
             470300              964544  51.2% bash

通過使用gzip -dv / zcat命令解壓一個檔案.

[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26  2017 bash.gz

[root@localhost ~]# gzip -dv bash.gz
bash.gz:         51.2% -- replaced with bash

[root@localhost ~]# zcat -d bash.gz >bash_zcat

bzip2壓縮: bzip2命令用於建立和管理,包括解壓縮,使用這個命令必須要先安裝,因為這個命令並沒有整合安裝.

[root@localhost ~]# yum install -y bzip2
[root@localhost ~]# bzip2 --hlep

命令語法:[ bzip2/bzcat [選項] 檔案或目錄 ]

        -c              #輸出壓縮解壓過程
        -d              #執行解壓縮
        -k              #解壓後保留原始檔案
        -v              #壓縮或解壓時詳細輸出
        -z              #強制執行壓縮

通過使用bzip2 -kzv命令將bash檔案壓縮.

[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# bzip2 -kzv bash
  bash:     2.164:1,  3.697 bits/byte, 53.79% saved, 964544 in, 445742 out.

通過使用bzip2 -kdv命令解壓縮bash.bz2檔案.

[root@localhost ~]# ls -lh
total 436K
-rwxr-xr-x. 1 root root 436K Sep 26  2017 bash.bz2

[root@localhost ~]# bzip2 -kdv bash.bz2
  bash.bz2: done

tar 歸檔並壓縮: 該命令常常與gz,bz2等壓縮命令結合使用。

[root@localhost ~]# tar --hlep

命令語法:[ tar [選項] 檔案或目錄 ]

        -c              #新建打包
        -t              #檢視打包檔案
        -x              #解壓打包檔案
        -j              #通過bz2進行壓縮與解壓
        -z              #通過gz進行壓縮與解壓
        -J              #通過xz進行壓縮與解壓
        -v              #顯示壓縮與解壓過程
        -C              #指定解壓到哪裡

通過使用tar -czvf xzvf tvf命令壓縮解壓與查詢.

[root@localhost ~]# tar -czvf lyshark.tar.gz /etc/*        #將/etc/*目錄下的內容壓縮成lyshark.tar.gz
[root@localhost ~]# tar -tvf lyshark.tar.gz                #查詢包中的內容
[root@localhost ~]# tar -xzvf lyshark.tar.gz -C /etc/      #將壓縮包,解壓到/etc/目錄下

通過使用tar -cjvf xjvf tvf命令壓縮解壓與查詢.

[root@localhost ~]# tar -cjvf lyshark.tar.bz2 /etc/*        #將/etc/*目錄下的內容壓縮成lyshark.tar.bz2
[root@localhost ~]# tar -tvf lyshark.tar.bz2                #查詢包中的內容
[root@localhost ~]# tar -xjvf lyshark.tar.bz2 -C /etc/      #將壓縮包,解壓到/etc/目錄下

通過使用tar -cJvf xJvf tvf命令壓縮解壓與查詢.

[root@localhost ~]# tar -cJvf lyshark.tar.xz /etc/*         #將/etc/*目錄下的內容壓縮成lyshark.tar.xz
[root@localhost ~]# tar -tvf lyshark.tar.xz                 #查詢包中的內容
[root@localhost ~]# tar -xJvf lyshark.tar.xz -C /etc/       #將壓縮包,解壓到/etc/目錄下

cpio塊級壓縮: cpio用來建立或者還原備份的工具程式,cpio命令可以備份任何東西包括裝置檔案。

[root@localhost ~]# cpio --help

壓縮語法:[ cpio –cvBo > [檔案|裝置] ]

        -c              #使用portable format儲存方式
        -v              #顯示過程
        -B              #設定輸入輸出塊為512bytes
        -o              #進入copy-out模式(壓縮)

檢視語法:[ cpio –ivct < [cpio檔案] ]

        -i              #將資料從檔案複製到系統中
        -c              #使用portable format儲存方式
        -t              #檢視CPIO壓縮包內容

還原語法:[ cpio –idvcu < [cpio檔案] ]

        -i              #進入copy-in模式(解壓)
        -d              #恢復到指定位置(視壓縮方式恢復)
        -v              #顯示過程
        -c              #使用portable format儲存方式
        -u              #替換所有檔案,無提示

使用cpio -cvBo命令,來備份/etc/目錄

[root@localhost ~]# find /etc/ -print | cpio -cvBo > /root/etc.cpio

[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

使用cpio -cvBo命令,將/etc/目錄下的內容備份到/sdb磁碟

[root@localhost ~]# find /etc/ -print | cpio -cvBo > /dev/vdb

使用cpio -ivct命令查詢,壓縮包內容

[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

[root@localhost ~]# cpio -ivct < etc.cpio

使用cpio -idvcu還原檔案到/etc/目錄

[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

[root@localhost ~]# cpio -idvcu < /root/etc.cpio

製作ISO映象: mkisofs命令用來將指定的目錄與檔案做成ISO 9660格式的映像檔案。

[root@localhost ~]# mkisofs --help

命令語法:[ mkisofs [選項] 檔案或目錄 ]

        -o              #後面接映象名
        -r              #連同檔案屬性一起記錄
        -v              #顯示構建過程
        -m              #排除指定檔案
        -V              #新建volume

通過mkisofs製作一個映象將/etc目錄製作成lyshark.iso.

[root@localhost ~]# mkisofs -r -v -o /root/lyshark.iso /etc/

[root@localhost ~]# ls -lh
total 123M
-rw-r--r--. 1 root root 123M Nov 16 11:14 lyshark.iso

磁碟測速與拷貝: dd命令用於磁碟測速與備份,該命令很底層所以可以完成很多備份工具無法完成的功能。

[root@localhost ~]# dd --help

備份語法:[ dd [if=原始檔] [of=輸出] [count=計數] ]

        if=檔名        #輸入檔名
        of=檔名        #輸出檔名
        bs=bytes        #讀入計數
        count=blocks    #僅拷貝blocks個塊
        /dev/zero       #是字元裝置會不斷返回0值位元組
        /dev/null       #空裝置,相當於一個垃圾桶

通過使用dd進行磁碟測速,測磁碟讀寫速度(可分別測試1024,2048,4096,8192)

[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1024 count=10000
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.00852247 s, 1.2 GB/s

通過使用dd進行磁碟常規備份

#將本地的 /dev/sda 整盤備份到 /dev/hdd
[root@localhost ~]# dd if=/dev/sda /of=/dev/hdd

#將 /dev/sda 全盤資料備份成指定路徑的image檔案
[root@localhost ~]# dd if=/dev/sda of=/tmp/image

#將image備份檔案恢復到指定盤/dev/sdb
[root@localhost ~]# dd if=/tmp/image of=/dev/sdb

#備份 /dev/sda 全盤資料,並利用gzip工具進行壓縮,儲存到/tmp/image.gz
[root@localhost ~]# dd if=/dev/sda | gzip > /tmp/image.gz

#恢復,將壓縮的備份檔案 /tmp/image.gz ,恢復到制定盤 /dev/sdb
[root@localhost ~]# gizp -dc /tmp/image.gz | dd of=/dev/sdb

通過使用dd命令備份磁碟MBR,與恢復分割槽MBR.

#備份MBR,備份磁碟 /dev/sda 開始的512個位元組大小的MBR資訊到指定檔案/tmp/mbr512
#其中:count=1 指僅拷貝一個塊;bs=512 指塊大小為512個位元組
[root@localhost ~]# dd if=/dev/sda of=/tmp/mbr512 count=1 bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00015245 s, 3.4 MB/s

#恢復MBR,將備份 /tmp/mbr512 的MBR資訊寫到磁碟開始部分 /dev/sda
[root@localhost ~]# dd if=/tmp/mbr512 of=/dev/sda
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000201242 s, 2.5 MB/s

通過使用dd命令拷貝記憶體資料與光碟資料到指定位置。

#拷貝記憶體內容到磁碟
[root@localhost ~]# dd if=/dev/mem of=/tmp/mem_image bs=1024(指定塊大小為1k)
dd: error reading ‘/dev/mem’: Bad address
632+0 records in
632+0 records out
647168 bytes (647 kB) copied, 0.001591 s, 407 MB/s

#拷貝光碟內容到指定資料夾,並儲存為/tmp/LyShark.iso檔案
[root@localhost ~]# dd if=/dev/sr0 of=/tmp/LyShark.iso
1249+0 records in
1248+0 records out
638976 bytes (639 kB) copied, 0.368021 s, 1.7 MB/s

#利用隨機數填充磁碟,徹底銷燬磁碟 /dev/sdb 資料
[root@localhost ~]# dd if=/dev/urandom of=/dev/sdb


軟體倉庫管理命令

RPM 命令的使用

RPM 全名是 "RedHat Package Manager" 簡稱則為 RPM 顧名思義,當初這個軟體管理的機制就是由 Red Hat 這家公司開發出來的 RPM 是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的 Linux 系統的一套管理機制.

RPM軟體包引數:
BASHBASH
[root@localhost ~]# ls -lh
total 1.8M
-r--r--r--. 1 root root 1.8M Jan 17 2018 bind-9.9.4-61.el7.x86_64.rpm

bind .9.9.4 -61 .el7 .x86_64 .rpm
↑ ↑ ↑ ↑ ↑ ↑
① ② ③ ④ ⑤ ⑥

1.軟體名稱:本例軟體名為bind
2.軟體版本:本例軟體版本為9.9.4-61
3.釋出次數:本例修改了61次
4.編譯平臺:編譯平臺有(el8=RHEL8,el7=RHEL7,el6=RHEL6)
5.適合平臺:平臺有(i386,i586,i686,noarch,x86_64)
6.打包格式:這裡是rpm包,還有一種gpkg包.
```
RPM安裝軟體: 安裝軟體是ROOT的工作,因此你得要是ROOT的身份才能夠使用RPM命令,該命令引數如下.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -i              #安裝一個新的rpm軟體包
        -v              #顯示安裝詳細過程
        -h              #以"#"號顯示安裝的進度
        --nodeps        #不檢測依賴安裝
        --force         #強制安裝,不管軟體是否存在,都強制重新安裝(修復軟體)
        --test          #測試安裝,不真正安裝,檢測軟體依賴關係
        --prefix        #指定安裝路徑,不按照預設路徑安裝
        --replacefiles  #以覆蓋寫入方式安裝
        --replacepkgs   #重複安裝軟體
        --justdb        #更新軟體在資料庫內的相關資訊
        --nosignature   #忽略數字證書檢測
        --noscripts     #禁止軟體安裝過程中執行某些命令

RPM查詢資訊: RPM在查詢的時候,其實查詢的地方是在/var/lib/rpm/ 這個目錄下的資料檔案。

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

[查詢已安裝軟體]
        -q 軟體名        #檢視指定軟體是否安裝
        -qa             #檢視系統中所有已安裝的軟體
        -qi 軟體名       #檢視指定軟體的詳細資訊
        -qc 軟體名       #列出軟體所以設定檔案
        -qd 軟體名       #列出軟體所以幫助檔案
        -ql 軟體名       #檢視指定軟體安裝的目錄和檔案列表
        -qR 軟體名       #檢視指定軟體的依賴關係
        –qf 檔案或目錄   #查詢檔案或者目錄,是由哪個軟體包安裝產生的

[查詢未安裝軟體]
        -qpi 包全名      #檢視指定未安裝軟體的詳細資訊
        -qpl 包全名      #檢視指定未安裝軟體的預設安裝位置(預覽)
        -qpR 包全名      #檢視指定未安裝軟體的依賴關係

RPM升級軟體: 使用RPM升級,就以-Uvh或-Fvh來升級即可

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -v              #顯示安裝詳細過程
        -h              #以"#"號顯示安裝的進度
        -U              #升級安裝,若沒安裝,則直接安裝,若安裝有舊版本,則升級安裝
        -F              #升級安裝,若沒安裝,則不安裝,必須有舊版本,才進行升級安裝

RPM解除安裝軟體:移除的選項很簡單,直接通過-e移除,必要時使用--rebuilddb重建一下資料庫檔案.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -e           #解除安裝軟體(注意解除安裝順序)
        --nodeps     #不檢測依賴解除安裝
        --rebuilddb  #重建資料庫,防止錯誤

RPM提取檔案: 從RPM包中提取出包裡面的檔案內容,類似於解壓縮,這裡解壓的是RMP包。

[root@localhost ~]# ls -l
total 48
-rw-rw-r-- 1 root root 47508 Jul  4  2014 tree-1.6.0-10.el7.x86_64.rpm

[root@localhost ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv     #提取tree包中的檔案
[root@localhost ~]# ll
total 48
-rw-rw-r-- 1 root root 47508 Jul  4  2014 tree-1.6.0-10.el7.x86_64.rpm
drwxr-xr-x 4 root root    30 Sep 20 05:17 usr

RPM驗證證書: 證書驗證可以確保檔案的原生性,即有沒有被修改過,命令如下:

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -V 軟體名        #驗證指定軟體安裝後的完整性,及檔案的元資料是否發生變化
        -Va             #列出目前系統上所有被改動過的檔案
        -Vf 檔名       #驗證指定檔案是否被修改過
        -Vp 檔名       #列出該軟體內可能被改動過的檔案

下面,我們通過驗證/etc/profile檔案來作為模板,看其每個引數所代表的含義.

[root@localhost ~]# rpm -Vf /etc/profile

S.5....T.      c           /etc/profile
#↑ 驗證結果     ↑ 檔案型別   ↑ 檔案位置

驗證結果具體的資訊:
s -------------> 檔案大小是否改變
M -------------> 許可權是否被改變
5 -------------> 檔案的MD5校驗和是否改變(即檔案內容)
D -------------> 主從裝置號是否改變(/dev/)
L -------------> 檔案路徑是否改變
U -------------> 檔案的屬主是否改變
G -------------> 檔案的屬組是否改變
T -------------> 檔案的修改時間是否改變

檔案型別具體分類:
c -------------> 配置檔案
d -------------> 普通檔案
g -------------> 鬼檔案
l -------------> 授權檔案
r -------------> 描述檔案

RPM匯入證書: 通過命令我們可以匯入系統映象的原廠證書,不匯入的話可能無法安裝程式。

[root@localhost ~]# ls -lh /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
-rw-r--r--. 1 root root 3.2K Feb 28  2018 /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhost ~]# ls -lh /mnt/RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 3.2K Feb 28  2018 /mnt/RPM-GPG-KEY-redhat-release

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  # 匯入證書
[root@localhost ~]# rpm -qa |grep pubkey                                      # 查詢證書
gpg-pubkey-2fa658e0-45700c69
[root@localhost ~]# rpm -qi gpg-pubkey-2fa658e0-45700c69

YUM命令的使用

YUM 是通過分析 RPM 的標頭資料後,根據各軟體的相關性,製作出軟體依賴解決方案,然後可以自動處理軟體的依賴屬性問題,以解決軟體安裝或移除與升級的問題,各大廠商都會提供自己的軟體倉庫,網上就可以找到很多配置方式.

配置本地YUM源: 我們的系統光盤裡就存在一個本地YUM倉庫,我們只需要配置一下即可使用了。

[root@localhost ~]# mount /dev/sr0 /mnt
[root@localhost ~]# cat /etc/yum.repos.d/redhat.repo
[server]
name="redhat yum"
baseurl=file:///mnt
enabled=1
gpgcheck=0
gpgkey=

[root@localhost ~]# yum repolist all  # 查詢倉庫是否配置成功
[root@localhost ~]# yum makecache     # 建立本地倉庫快取

配置網路YUM源: 由於RHEL系統YUM是收費的,所以我們要將其改成Centos的YUM源來使用.

# 刪除RHEL系統中預設的YUM倉庫程式
[root@localhost ~]# rpm -qa |grep "yum" |xargs rpm -e --nodeps
[root@localhost ~]# rpm -qa |grep "python-urlgrabber" |xargs rpm -e --nodeps
[root@localhost ~]# rpm -qa |grep yum

# 下載Centos7系統的YUM源倉庫工具並強制安裝
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-9.el7.noarch.rpm
[root@localhost ~]# rpm -ivh --nodeps *.rpm

# 下載Centos7系統的Yum源
[root@localhost ~]# rm -fr /etc/yum.repos.d/*
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 編輯配置檔案並替換所有的$releaserver替換為7
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
:%s/$releasever/7/g
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache

YUM倉庫查詢:

[root@localhost ~]# yum --help

命令語法:[ yum [選項] 包名稱 ]

        -y              #自動化安裝,無需應答
        installroot     #安裝時指定安裝位置
        search          #搜尋指定包檔案
        list            #顯示全部可用列表
        info            #顯示軟體相關資訊
        grouplist       #查詢所有已安裝和可安裝的軟體組
        groupinfo       #列出軟體組中包含的軟體
        provides        #通過關鍵字查詢安裝包

YUM安裝與更新:

[root@localhost ~]# yum install [軟體名]              #全部安裝
[root@localhost ~]# yum groupinsall [軟體組名]        #安裝程式組

[root@localhost ~]# yum update [軟體名]              #全部更新
[root@localhost ~]# yum check-update                #檢查可更新的程式
[root@localhost ~]# yum upgrade [軟體名]             #升級指定程式包
[root@localhost ~]# yum groupupdate [組軟體名]       #升級程式組

[root@localhost ~]# yum  remove [軟體名]              #刪除軟體
[root@localhost ~]# yum  groupremove [軟體組名]       #刪除軟體組

YUM清理快取:

[root@localhost ~]# yum clean packages       #清除快取目錄下的軟體包
[root@localhost ~]# yum clean headers        #清除快取目錄下的 headers
[root@localhost ~]# yum clean oldheaders     #清除快取目錄下舊的 headers

[root@localhost ~]# yum clean all            #清除下載的臨時軟體包和快取
[root@localhost ~]# yum makecache            #建立軟體包快取,提高查詢速度
[root@localhost ~]# yum update               #更新所有需要更新的軟體&核心

安裝圖形介面:

[root@localhost ~]# yum -y install xorg*
[root@localhost ~]# yum -y groupinstall "X Window System"
[root@localhost ~]# yum -y groupinstall Desktop
[root@localhost ~]# yum -y groupinstall "Chinese Support"
[root@localhost ~]# startx  

APT命令的使用

apt-get 是一款適用於Unix和Linux系統的應用程式管理器,最初於1998年釋出,用於檢索應用程式並將其載入到Debian系統,Apt-get成名的原因之一在於其出色的解決軟體依賴關係的能力,其通常使用.deb-formatted檔案,隨著Linux在企業中的普及,Windows和Mac使用者瞭解如何使用apt-get載入應用程式有一定的好處.

DPKG包管理命令:

root@kali:~# dpkg --help

命令語法:[ dpkg [選項] 包名稱 ]

        -i              #安裝軟體包
        -r              #刪除軟體包
        -P              #刪除軟體包的同時刪除其配置檔案
        -L              #顯示軟體包檔案列表
        -l              #顯示已安裝軟體包列表
        -c              #顯示軟體包內檔案列表
        -s              #顯示指定軟體包的詳細狀態
        --unpack        #解開軟體包
        --confiugre     #配置軟體包

APT包管理工具:

root@kali:~# apt --help

命令語法:[ apt [選項] 包名稱 ]

        -i              #安裝軟體包
        list            #根據名稱列出軟體包
        search          #搜尋軟體包描述
        show            #顯示軟體包細節
        install         #安裝軟體包
        remove          #移除軟體包
        autoremove      #解除安裝所有自動安裝且不再使用的軟體包
        update          #更新可用軟體包列表
        upgrade         #通過安裝/升級軟體來更新系統

apt安裝與刪除:

root@kali:~# sudo apt-get install package             #安裝包
root@kali:~# sudo apt-get install package --reinstall #重新安裝包
root@kali:~# sudo apt-get -f install                  #修復安裝
root@kali:~# sudo apt-get bulid-dep package           #安裝相關的編譯環境
root@kali:~# sudo apt-get remove package              #刪除包
root@kali:~# sudo apt-get remove package --purge      #完全刪除包
root@kali:~# sudo apt-get -f autoremove               #把軟體附加項也刪掉
root@kali:~# sudo apt-get autoremove --purge software #刪除的更徹底些

apt更新與修復:

root@kali:~# sudo apt-get update                          #更新源
root@kali:~# sudo apt-get upgrade                         #更新已安裝的包
root@kali:~# sudo apt-get dist-upgrade                    #升級系統
root@kali:~# sudo apt-get source package                  #下載該包的原始碼
root@kali:~# sudo apt-get clean && sudo apt-get autoclean #清楚無用的包
root@kali:~# sudo apt-get check                           #檢查是否有損壞的依賴
root@kali:~# sudo dpkg -i package                         #安裝字尾是deb的

apt搜尋軟體包:

root@kali:~# sudo apt-cache search package                #搜尋軟體包
root@kali:~# sudo apt-cache show package                  #獲取軟體包資訊
root@kali:~# sudo apt-cache depends package               #瞭解使用該包依賴哪些包
root@kali:~# sudo apt-cache redepends package             #檢視該包被哪些包依賴


系統使用者與組管理

配置檔案解析

Linux系統是多使用者的系統,為了保證使用者的安全,預設將使用者賬號放入/etc/passwd檔案中,把密碼單獨放置在了/etc/shadow檔案中且許可權是隻允許root能夠訪問,而同樣將使用者組相關資訊分別放置在了/etc/group/etc/gshadow 這兩個配置檔案中進行儲存,下面給將具體介紹配置檔案欄位含義。

/etc/passwd: 儲存使用者名稱稱以及預設的使用者環境。

[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

| 第一列       | 使用者名稱:就是賬號,用來對應UID的:例如root的UID對應就是0 |
| 第二列       | 密碼位:密碼佔位符,這個欄位的密碼資料在/etc/shadow中  |
| 第三列       | 使用者UID:0=管理員,1-499=系統賬戶,500-65535=自定義賬戶|
| 第四列       | 使用者GID:也就是使用者的組ID號,這個GID與/etc/group有關  |
| 第五列       | 使用者描述資訊:這一列可有可無,只是用來解釋賬號的意義而已|
| 第六列       | 使用者家目錄:指定了使用者的家目錄儲存位置,系統預設生成    |
| 第七列       | 登陸預設Shell:指明系統預設的登陸shell是什麼          |

/etc/shadow: 主要儲存使用者的密碼hash值,以及使用者的過期時間等。

[root@localhost ~]# head -n 3 /etc/shadow
root:$6$TT4VWP5W$Libo7Yk8JzG15VQWKu:17699:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::

| 第一列       | 使用者名稱:這個檔案的第一欄就是賬號,必須要與/etc/passwd相同才行 |
| 第二列       | 密碼位:這個欄位內的資料才是真正的口令,而且是經過加密的口令   |
| 第三列       | 密碼最近更改時間:這個欄位記錄了『更改系統口令那一天』的日期    |
| 第四列       | 密碼最短有效期:賬號的口令在最近一次被更改後需要經過幾天后才能再次更改 |
| 第五列       | 密碼最長有效期:指定在最近一次更改口令後,經過多久需要再次更改的時間 |
| 第六列       | 密碼到期前的警告天數:當賬號口令過期時,系統會發出『警告』給這個賬號   |
| 第七列       | 密碼過期後的寬限天數:口令有效日期為『升級日期(第3欄位)』+『重新變更日期(第5欄位)』 |
| 第八列       | 密碼失效時間:賬號在此欄位規定的日期之後,將無法再使用,預設是9999999 |
| 第九列       | 系統保留:此配置沒有被使用,屬於系統保留欄位                  |

/etc/group: 這個檔案就是在記錄GID與組名的對應了,他主要是實現組使用者的記錄工作/etc/group

[root@localhost ~]# head -n 3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

| 第一列       |  組名