天天看點

Linux RHEL 7系統指令統計加執行個體說明

****** 原文檔下載下傳連接配接 ******

目錄

systemctl 7系統服務管理指令 5

sysctl 檢視和設定/proc/sys内的所有可更改參數 5

系統登陸資訊相關 5

mailx 6

rpm 6

yum 6

chkconfig(7中已經棄用,保留少量功能) 7

httpd 7

ip 7

ifconfig 7

vim 8

Vim的幾種模式 8

文檔操作 8

基本移動 9

基本插入 10

複制、粘貼、删除 10

查找 11

替換 12

拼寫檢查 13

一次編輯多個檔案 13

分屏編輯 13

關閉子視窗 14

切換和移動視窗 14

撤消與重做(normal模式) 14

檔案加解密 14

檔案的編碼 15

檔案格式 15

多行縮進縮出 16

執行外部指令 16

在你忘記用 root 方式打開檔案時的檔案儲存 16

按時間回退檔案 16

把 Vim 變為十六進制編輯器 17

跳到上一個/下一個位置 17

把目前檔案轉化為網頁 17

cp 17

cd 17

chroot根切換 18

selinux相關 18

ss 19

ps 19

pstree 19

pidof 20

free 20

top 20

vmstat 緩存資訊顯示 23

dstat 25

發送消息wall,write,talk, 26

date 26

ls 26

file 27

echo 27

mkdir 27

mktemp 27

tree 27

cp 27

tail 28

head 28

alias 28

unalias撤銷别名 28

source . bash重讀配置檔案 28

grep 29

tr 替換 30

useradd 30

groupadd 31

userdel 31

groupdel 31

usermod 31

groupmod 32

passwd 32

gpasswd 32

newgrp 33

chmod 33

chown 33

iptables 33

ipvsadm lvs配置 36

setfacl 37

getfacl 38

find 38

fdisk相關 39

後續處理指令 40

mount 40

Ldd 40

Ln 41

lsmod 顯示核心已加載的子產品 41

modinfo 顯示子產品詳細内容 41

depmod産生子產品依賴的映射檔案,在建構嵌入式系統時,需要由這個指令來生成相應的檔案,由modprobe使用 41

modprobe 41

uname 42

Sync 強制同步(立刻)同步(superblock/操)作到裝置 42

kill=killall 42

wc 42

sudo 43

jobs 43

screen 43

Sleep 44

crontab 44

at 45

batch 讓系統在空閑時選擇時間自動執行 45

tar 46

ssh 46

openssl 46

scp 47

ftp相關 47

文本處理 47

cut 47

send –options ‘cmd’ 48

awk 48

diff文檔對比 49

Vimdiff vim打開打開2個文檔進行對比 49

xshell内置的環境變量 49

xshell下的正規表達式 49

systemctl 7系統服務管理指令

1.status 狀态檢視 2.list-units –t service加載服務檢視 3.list-unit-files –t service 自啟狀态檢視

4.disable/enable service 設定開機自啟/關閉開機自啟

5.list-units –t target 檢視所有運作級别

6.set-default/get-default name.target 設定/擷取運作級别

7.isolate 運作級别切換

8.list-dependencies name.service/name.target 顯示目前服務(在所有運作級别下狀态)/運作級别下所有開機啟動或開機非啟動服務(綠點為啟動,紅點不啟動)

9. systemctl daemon-reload 重新加載/etc/system/system/下各服務的units檔案

journalctl 日志管理

  1. journalctl –xe 添加注釋資訊并分頁顯示
  2. journalctl _UID=1000 --since today 檢視ID1000的今天的系統日志
  3. journalctl -u ssh.service --since today 檢視服務ssh今天的日志
  4. journalctl -f -u apache 重新整理顯示
  5. journalctl -k -b -1 僅顯示本次啟動的核心日志 –k核心日志 –b 指定某次啟動 -1配合-b 指本次啟動

    sysctl 檢視和設定/proc/sys内的所有可更改參數

  6. sysctl –a 列印所有可更改參數
  7. sysctl –p /file 根據檔案修改
  8. sysctl –w net.ipv4.ip_forward=1 将ip_forward啟用

    系統登陸資訊相關

  9. last 目前系統成功登陸日志
  10. lastb目前系統失敗登陸日志
  11. lastlog 目前系統每個使用者最近一次登陸

    mailx

    mailx –s “title” [email protected] <file.txt

    echo “someting” |mailx [email protected]

    rpm

    1.-ql 顯示程式所有相關檔案 2.-qc 顯示程式相關配置文檔

    3.-q 程式安裝版本 4.-qi 安裝包詳細資訊 5.-i 安裝

    6.-h 哈希編碼 7.-U 更新安裝,支援聯網

    yum

  12. yum clean all 清理yum緩存
  13. yum repolist 列出倉庫中的所有軟體包
  14. yum grouplist 列出軟體包組
  15. yum install –y 安裝并自動處理依賴關系 creatrepo 可建立依賴檔案
  16. yum groupinstall –y 安裝軟體包組
  17. yum search 查找軟體包
  18. yum info 軟體包詳細資訊
  19. yum updateinfo/update 檢視更新資訊/更新
  20. yum remove/groupremove 删除軟體包/軟體包組
  21. yum history yum使用日志

    chkconfig(已經棄用)

    chkconfig --list network 顯示network的自啟的運作級别

    chkconfig --level 0 network on/off/reset 設定network服務在level 0級别自啟

    httpd

    1.-t 檢查文法 2.-M 顯示靜态加載的子產品 3.-D 配合-t使用 DUMP_MOUDLES可顯示子產品資訊

    ip

    文法:ip option @ # dev 接口名

    @1.Link 連接配接相關 2.address 位址相關 3.route 路由相關

    #1.add 添加 2.del 删除 3.change 修改 4.replace 替換 5.list 列印

    Option:常用選項-s status更詳細列出

    Dev 跟接口名

    ifconfig

  22. ifconfig promisc eth0 開啟混雜模式,資料包目的位址不是自己,仍然接收
  23. ifup eth0 啟用網卡eth0
  24. ifdown etho 禁用網卡eth0

    vim

    Vim的幾種模式

    • 正常模式:可以使用快捷鍵指令,或按:輸入指令行。

    • 插入模式:可以輸入文本,在正常模式下,按i、a、o等都可以進入插入模式。

    • 可視模式:正常模式下按v可以進入可視模式, 在可視模式下,移動光标可以選擇文本。按V進入可視行模式, 總是整行整行的選中。ctrl+v進入可視塊模式。

    • 替換模式:正常模式下,按R進入。

    文檔操作

    • :e file --關閉目前編輯的檔案,并開啟新的檔案。 如果對目前檔案的修改未儲存,vi會警告。

    • :e! file --放棄對目前檔案的修改,編輯新的檔案。

    • :e+file – 開始新的檔案,并從檔案尾開始編輯。

    • :e+n file – 開始新的檔案,并從第n行開始編輯。

    • :enew --編譯一個未命名的新文檔。(CTRL-W n)

    • :e – 重新加載目前文檔。

    • :e! – 重新加載目前文檔,并丢棄已做的改動。

    • :e#或ctrl+^ – 回到剛才編輯的檔案,很實用。

    • :f或ctrl+g – 顯示文檔名,是否修改,和光标位置。

    • :f filename – 改變編輯的檔案名,這時再儲存相當于另存為。

    • :w – 儲存修改。

    • :n1,n2w filename – 選擇性儲存從某n1行到另n2行的内容。

    • :wq – 儲存并退出。

    • ZZ – 儲存并退出。

    • :x – 儲存并退出。

    • :q——退出目前視窗。(CTRL-W q或CTRL-W CTRL-Q)

    • :saveas newfilename – 另存為

    • :Sex – 水準分割一個視窗,浏覽檔案系統;

    • :Vex – 垂直分割一個視窗,浏覽檔案系統;

    基本移動

    • 0: 移動到行首。

    • :n 移動到第n行。

    • H: 把光标移到螢幕最頂端一行。

    • L: 把光标移到螢幕最底端一行。

    • gg: 到檔案頭部。

    • G: 到檔案尾部。

    • . 本行

    基本插入

    • i: 在光标前插入;一個小技巧:按8,再按i,進入插入模式,輸入=, 按esc進入指令模式,就會出現8個=。 這在插入分割線時非常有用,如30i+就插入了36個+組成的分割線。

    • I: 在目前行第一個非空字元前插入;

    • a: 在光标後插入;

    • A: 在目前行最後插入;

    • o: 在下面建立一行插入;

    • O: 在上面建立一行插入;

    • :r filename在目前位置插入另一個檔案的内容。

    • :r !date 在光标處插入目前日期與時間。

    • :r !command可以将其它shell指令的輸出插入目前文檔。

    複制、粘貼、删除

    • y: 複制在可視模式下選中的文本。

    • yy: 複制整行文本。

    • y0: 從光标目前位置複制到行首。

    • :m,ny 複制m行到n行的内容。

    • d: 删除(剪切)在可視模式下選中的文本。

    • d0: 删除(剪切)目前位置到行首的内容

    • [n] dd: 删除(剪切)1(n)行。

    • :m,nd 剪切m行到n行的内容。

    • p: 在光标之後粘貼。

    • P: 在光标之前粘貼。

    查找

    • /something: 在後面的文本中查找something。

    • ?something: 在前面的文本中查找something。

    • /pattern/+number: 将光标停在包含pattern的行後面第number行上。

    • /pattern/-number: 将光标停在包含pattern的行前面第number行上。

    • n: 向後查找下一個。

    • N: 向前查找下一個。

    • vimgrep前面可以加數字限定搜尋結果的上限,如

    • :1vim/pattern/ % 隻查找那個模式在本檔案中的第一個出現。

    • 其實vimgrep在讀純文字電子書時特别有用,可以生成導航的目錄。

    • 比如電子書中每一節的标題形式為:n. xxxx。你就可以這樣:

    • 然後用:cw或:copen檢視結果,可以用C-w H把quickfix視窗移到左側,就更像個目錄了。

    替換

    • :n1,n2s/old/new/g - 用new替換檔案n1行到n2行所有的old。

    • 所有替換指令末尾加上c,每個替換都将需要使用者确認。 如:%s/old/new/gc,加上i則忽略大小寫(ignore)。

    還有一種比替換更靈活的方式,它是比對到某個模式後執行某種指令,

    文法為 :[range]g/pattern/command

    表示對于以一個空格和xyz開頭的行執行normal模式下的dd指令。

    關于range的規定為:

    • 如果不指定range,則表示目前行。

    • m,n: 從m行到n行。

    • 0: 最開始一行(可能是這樣)。

    • .: 目前行

    拼寫檢查

    • :set spell-開啟拼寫檢查功能

    • :set nospell-關閉拼寫檢查功能

    • ]s-移到下一個拼寫錯誤的單詞

    • [s-作用與上一指令類似,但它是從相反方向進行搜尋

    • z=-顯示一個有關拼寫錯誤單詞的清單,可從中選擇

    • zg-告訴拼寫檢查器該單詞是拼寫正确的

    • zw-與上一指令相反,告訴拼寫檢查器該單詞是拼寫錯誤的

    一次編輯多個檔案

    • 使用:n編輯下一個檔案。

    • :2n 編輯下2個檔案。

    • 使用:N編輯上一個檔案。

    • 使用:wnext,儲存目前檔案,并編輯下一個檔案。

    • 使用:wprevious,儲存目前檔案,并編輯上一個檔案。

    • 使用:args 顯示檔案清單。

    • :n filenames或:args filenames 指定新的檔案清單。

    • vi -o filenames 在水準分割的多個視窗中編輯多個檔案。

    • vi -O filenames 在垂直分割的多個視窗中編輯多個檔案。

    分屏編輯

    • vim -o file1 file2:水準分割視窗,同時打開file1和file2

    • vim -O file1 file2:垂直分割視窗,同時打開file1和file2

    關閉子視窗

    • :qall – 關閉所有視窗,退出vim。

    • :wall – 儲存所有修改過的視窗。

    • :only – 隻保留目前視窗,關閉其它視窗。(CTRL-W o)

    • :close – 關閉目前視窗,CTRL-W c能實作同樣的功能。 (象 :q :x同樣工作 )

    切換和移動視窗

    • ctrl+w: 切換到下一個視窗。或者是ctrl+w w。

    • ctrl+w p: 切換到前一個視窗。

    撤消與重做(normal模式)

    • [n] u: 取消一(n)個改動。

    • :undo 5 – 撤銷5個改變。

    • :undolist – 你的撤銷曆史。

    • ctrl + r: 重做最後的改動。

    • U: 取消目前行中所有的改動。

    檔案加解密

    • vim -x file: 開始編輯一個加密的檔案。

    • :X – 為目前檔案設定密碼。

    • :set key= – 去除檔案的密碼。

    檔案的編碼

    • :e ++enc=utf8 filename, 讓vim用utf-8的編碼打開這個檔案。

    • :w ++enc=gbk,不管目前檔案什麼編碼,把它轉存成gbk編碼。

    • :set fenc或:set fileencoding,檢視目前檔案的編碼。

    • 在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936,vim會根據要打開的檔案選擇合适的編碼。 注意:編碼之間不要留白格。 cp936對應于gbk編碼。 ucs-bom對應于windows下的檔案格式。

    • 讓vim 正确處理檔案格式和檔案編碼,有賴于 ~/.vimrc的正确配置

    檔案格式

    大緻有三種檔案格式:unix, dos, mac. 三種格式的差別主要在于Enter鍵的編碼:dos 下是回車加換行,unix 下隻有 換行符,mac 下隻有回車符。

    • :e ++ff=dos filename, 讓vim用dos格式打開這個檔案。

    • :w ++ff=mac filename, 以mac格式存儲這個檔案。

    • :set ff,顯示目前檔案的格式。

    • 在vimrc中添加set fileformats=unix,dos,mac,讓vim自動識别檔案格式。

    多行縮進縮出

    正常模式下,按兩下>;光标所在行會縮進。如果先按了n,再按兩下>;,光标以下的n行會縮進。對應的,按兩下<;,光标所在行會縮出。

    如果在編輯代碼檔案,可以用=進行調整。在可視模式下,選擇要調整的代碼塊,按=,代碼會按書寫規則縮排好。或者n =,調整n行代碼的縮排。

    執行外部指令

    • :! cmd 執行外部指令。

    • :!! 執行上一次的外部指令。

    • :r !cmd 将指令的傳回結果插入檔案目前位置。

    • :m,nw !cmd 将檔案的m行到n行之間的内容做為指令輸入執行指令。

    在你忘記用 root 方式打開檔案時的檔案儲存

    • :w !sudo tee % 直接以 root 方式儲存。

    按時間回退檔案

    :earlier 1m 把檔案回退到 1 分鐘以前的狀态。

    :later 1m 進行相反的轉換

    把 Vim 變為十六進制編輯器

    :%!xxd 檔案轉換為十六進制模式

    :%!xxd –r 恢複原來的狀态

    跳到上一個/下一個位置

    Ctrl+o 跳回之前修改的地方

    Ctrl+I 回退上面的跳動

    把目前檔案轉化為網頁

    :%TOhtml 生成一個 HTML 檔案來顯示文本,并在分開的視窗顯示源代碼

    cp

    Cp filename {,.bak} 快速備份

    cd

    cd !$ 把上個指令的參數作為cd參數使用

    cd - 傳回進入此目錄之前所在的目錄

    cd … 傳回上級目錄

    cd ~ username 切換至指定使用者目錄

    chroot根切換

    chroot newroot

    selinux相關

    *1.setenforce {0.1} 調整selinux為寬松模式或嚴格模式

    *2.stat file 檢視檔案的selinux上下文資訊

    *3.chcon –u system_u file 修改file的selinux上下文user資訊為system_u

  25. chcon –r object_r file 修改file的selinux上下文role資訊為object_r
  26. chcon –t admin_home_t 修改file的selinux上下文tepe資訊為

    admin_home_t

  27. chcon –u system_u -R /directory 修改檔案夾内所有檔案selinux上下文
  28. chcon --reference=file1 file2 根據file1為模闆,修改file2

    *8. restorecon [-f infilename] (-R file/-e directory) [從檔案中讀将要還原的清單] 恢複檔案/檔案夾的selinux上下文

    *9.getsebool –a 擷取所有可更改的selinux布爾值

    10.getsebool zebra_write_config 顯示zebra_write_config的布爾值

    *11.setsebool zebra_write_config=1/on 開啟zebra_write_config

    12.setsebool –P zebra_write_config=1/on 更改後并寫進政策檔案中

    ss

    常用

    -n:不解析服務名稱,以數字方式顯示; -a:顯示所有的套接字;

    -t:隻顯示tcp套接字; -u:隻顯示udp套接字;

    -l:顯示處于監聽狀态的套接字; -p:顯示使用套接字的程序資訊;

    -s:列出目前主機套接字總資訊

    其他

    -m:顯示套接字的記憶體使用情況; -i:顯示内部的TCP資訊; -4:隻顯示ipv4的套接字; -o:顯示計時器資訊;

    -6:隻顯示ipv6的套接字; -d:隻顯示DCCP套接字;

    -w:僅顯示RAW套接字; -x:僅顯示UNIX域套接字

ss –pl 檢視程序使用的socket

ss -pl | grep 3306 找出打開套接字/端口應用程式

ps

1.a 與終端有關 2.x 與終端無關 3.u 與使用者中心組有關

4.-u dump 指明使用者 5.ps au 所有使用者

pstree

1.pstree –a 全部

pidof

1.pidof sshd 檢視sshd服務觸發的所有程序ID

free

  1. free –l 詳細記憶體使用資訊
  2. free –k/m/g 按k/m/g 顯示
  3. free –s 1 每秒重新整理顯示

    top

    1.u 輸入指定使用者檢視 2.k 輸入指定PID,殺死

    3.r 輸入指定PID,可重新設定nice值 4.f 進入新界面,指定顯示内容

    5.h 顯示幫助

    Top界面參數

    第一行:

    10:01:23 — 目前系統時間

    126 days, 14:29 — 系統已經運作了126天14小時29分鐘(在這期間沒有重新開機過)

    2 users — 目前有2個使用者登入系統

    load average: 1.15, 1.42, 1.44 — load average後面的三個數分别是1分鐘、5分鐘、15分鐘的負載情況。

    load average資料是每隔5秒鐘檢查一次活躍的程序數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了。

第二行:

Tasks — 任務(程序),系統現在共有183個程序,其中處于運作中的有1個,182個在休眠(sleep),stoped狀态的有0個,zombie狀态(僵屍)的有0個。

第三行:cpu狀态

6.7% us — 使用者空間占用CPU的百分比。

0.4% sy — 核心空間占用CPU的百分比。

0.0% ni — 改變過優先級的程序占用CPU的百分比

92.9% id — 空閑CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比

0.0% si — 軟中斷(Software Interrupts)占用CPU的百分比

第四行:記憶體狀态

8306544k total — 實體記憶體總量(8GB)

7775876k used — 使用中的記憶體總量(7.7GB)

530668k free — 空閑記憶體總量(530M)

79236k buffers — 緩存的記憶體量 (79M)

第五行:swap交換分區

2031608k total — 交換區總量(2GB)

2556k used — 使用的交換區總量(2.5M)

2029052k free — 空閑交換區總量(2GB)

4231276k cached — 緩沖的交換區總量(4GB)

第六行空行

第七行以下:各程序(任務)的狀态監控

PID — 程序id

USER — 程序所有者

PR — 程序優先級

NI — nice值。負值表示高優先級,正值表示低優先級

VIRT — 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES

RES — 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA

SHR — 共享記憶體大小,機關kb

S — 程序狀态。D=不可中斷的睡眠狀态 R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序

%CPU — 上次更新到現在的CPU時間占用百分比

%MEM — 程序使用的實體記憶體百分比

TIME+ — 程序使用的CPU時間總計,機關1/100秒

COMMAND — 程序名稱(指令名/指令行)

多U多核CPU監控

在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯

vmstat 緩存資訊顯示

1.vmstat –S k(1000b)/K(1024b)/m(1000k)/M(1024k) 顯示格式

2.vmstat –D 2 輸出disk table并2秒重新整理一次

3.vmstat –s 2 輸出vm table并2秒重新整理一次

輸出内容意義

1.Procs(程序)

r: 運作隊列中程序數量,這個值也可以判斷是否需要增加CPU。(長期大于1)

b: 等待IO的程序數量。

2.Memory(記憶體)

swpd: 使用虛拟記憶體大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統性能。

free: 空閑實體記憶體大小。

buff: 用作緩沖的記憶體大小。

cache: 用作緩存的記憶體大小,如果cache的值大的時候,說明cache處的檔案數多,如果頻繁通路到的檔案都能被cache處,那麼磁盤的讀IO bi會非常小。

3.Swap

si: 每秒從交換區寫到記憶體的大小,由磁盤調入記憶體。

so: 每秒寫入交換區的記憶體大小,由記憶體調入磁盤。

注意:記憶體夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑記憶體(free)很少的或接近于0時,就認為記憶體不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。

4.IO(現在的Linux版本塊的大小為1kb)

bi: 每秒讀取的塊數

bo: 每秒寫入的塊數

注意:随機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。

6.system(系統)

in: 每秒中斷數,包括時鐘中斷。

cs: 每秒上下文切換數。

注意:上面2個值越大,會看到由核心消耗的CPU時間會越大。

7.CPU(以百分比表示)

us: 使用者程序執行時間百分比(user time)

us的值比較高時,說明使用者程序消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程式算法或者進行加速。

sy: 核心系統程序執行時間百分比(system time)

sy的值高時,說明系統核心消耗的CPU資源多,這并不是良性表現,我們應該檢查原因。

wa: IO等待時間百分比

wa的值高時,說明IO等待比較嚴重,這可能由于磁盤大量作随機通路造成,也有可能磁盤出現瓶頸(塊操作)。

id: 空閑時間百分比

dstat

1.dstat -N eth1,total:有多塊網卡時,指定要顯示的網卡

2.dstat –f 啟用所有大寫功能

3. --output 檔案:此選項也比較有用,可以把狀态資訊以csv的格式重定向到指定的檔案中

4. dstat –-fs 檔案系統

5. dstat –bits/float/integer 以b/小數/B 顯示

6. --ipc:顯示ipc消息隊列,信号等資訊。

7.–socket:用來顯示tcp udp端口狀态。

8. -l:顯示系統負載情況。

dstat還可以監控其他程式狀态,如mysql等,詳查man

發送消息wall,write,talk,

1.wall + message 廣播給所有使用者

2.write 發送給指定使用者

echo “message” |write username [ttyname(例如pts/1)]

echo “message” |write [email protected]

3.talk username 建立時時對話

Talk [email protected]

date

1.%F 2016-8-16 方式輸出 date +%F 2.%D 16/8/16輸出英式時date +%D

3.%T 13:53:18僅輸出時間 date +%T

3.%Y 僅輸出年份 4.%m 僅輸出月份 5.%d 僅輸出日期

6.%H 僅輸出小時 7.%M 僅輸出分鐘 8.%S 僅輸出秒鐘

9.%C 僅輸出世紀 10. date +%F*%T 2018-10-0514:10:28 連接配接符自定

日期設定格式 date 月份日期小時分鐘年份.秒鐘

ls

1.Ls –ld 顯示檔案夾屬性 2.ls –r 按字母逆序顯示,預設順序 3.ls –R 遞歸顯示 4.ls –h 轉換成大小輸出(K,M,G)

file

1.fiel –d 輸出debug資訊 2.file filename 顯示檔案格式

echo

1.echo –e 使用轉義字元 \n,\t

mkdir

1.mkdir –p /1/2/3 遞歸建立 2.mkdir –m umask directory 建立時指明權限

3.mkdir –v 顯示詳細資訊

mktemp

1.mktemp /tmp/tmp.xxx 建立臨時檔案

2.mktemp –d /tmp/tmp.xxx 建立臨時檔案夾

3.mktemp –-tepdir=/tmp/test 指明臨時檔案建立位置

tree

1.tree –d 隻顯示檔案夾 2.tree –l 3 設定顯示深度

cp

1.cp –i 互動式 2.cp –r ,-R 遞歸複制 3.cp –a 複制檔案原有一切屬性

4.-p 保留源檔案權限 5.-f 強制

tail

1.tail –10 檢視檔案後10行 2.tail –f 追蹤文檔改變

head

1.head -10 檢視文檔前10行

alias

1.alias c=”clear” 定義指令别名 ~/.bashrc 定義此處對目前使用者有用 /etc/bashrc 對所有使用者有效

2./rm 不使用指令别名

unalias撤銷别名

1.unalias c 撤銷别名c=”clear” 2.unalias –a 撤銷所有别名

source . bash重讀配置檔案

1.source filename 2. . filename

grep

  1. grep –o 僅輸出比對到的字元串 2.grep –v 反向比對

    3.grep –i 忽略大小寫 4.grep –A 10 向後顯示10行

    5.grep –B 10 向前顯示10行 6.grep –c 10 前後多輸出10行

    擴充正規表達式

    1.字元比對

    (1)egrep .a file 比對a前隻有一個任意字元的行

    (2)egrep a. file 比對a後隻有一個任意字元的行

    (3)egrep [a-z]a file 比對a前面存在a-z任意個任意字元的行

    (4) egrep a[a-z] file 比對a後面存在a-z任意個任意字元的行

    (5) egrep [^a-z]a file 比對a前面除去字元a-z任意個其他字元的行

    2.次數比對,用在要比對的字元後

    (1)egrep a* file 比對任意次a

    (2)egrep a.* file 比對任意字元任意次

    (3)egrep a? file 比對a 0次後1次

    (4)egrep a+ file 至少比對a 1次

    3.位置錨定

    (1)egrep ^a file 以a開頭的行

    (2)egrep a$ file 以a結尾的行

    (3)egrep ^$ file 空行

    (4)egrep a{3} file 比對a 3次

    (5)egrep a{2,5} file 比對a 2次到5次

    4.分組

    (1)egrep (ab) file 比對ab 1次

    tr 替換

    1.tr ab cd file2 将file1中的ab替換成cd并存入file2(最後一個參數不能是file1)

    2.tr –d ab file2 将file1中ab删除并存入file2中(最後一個參數不能是file2)

    useradd

    1.useradd –u 501 username 指明使用者ID 501 并建立(root 為0,系統使用者1-499,登陸使用者500+)

    2.useradd –g 501 username 指明組ID 501

    3.useradd –c gust-user username 使用者注釋資訊

    4.useradd –d /usr/home username 指定使用者家目錄

    5.useradd –s tcsh username 指定shell

    6.useradd –G 組名/組ID username 指定附加組

    7.useradd –p xxxx username 添加密碼

    8.useradd –r username 建立系統使用者

    groupadd

    1.groupadd –f groupname 若組存在傳回成功

    2.groupadd –g groupname 指定組ID

    3.groupadd –p xxxx groupname 指定密碼

    4.groupadd –r groupname 建立系統使用者組

    userdel

    1.userdel –r username 删除使用者及其家目錄

    groupdel

    1.groupdel groupname 删除組

    usermod

    1.usermod –u 502 username 設定新的UID 502

    2.usermod –g GID/組名 username設定新的基本組

    3.usermod –G GID/組名 username設定新的附加組 –a 并保留原有附加組

    4.usermod –s ctsh username新的shell

    5.usermod –c message username新的注釋資訊

    6.usermod –d /home username 新的家目錄

    7.usermod –l(愛奧) newname usrename 新使用者名

    8.usermod –L username 鎖定使用者,不可登陸

    9.usermod –U username 解鎖使用者

    groupmod

    1.groupmod –n newname groupname 新組名

    2.groupmod –g ID 新組ID

    3.groupmod –p xxxx groupname 新密碼

    passwd

    1.passwd username 修改密碼

    2.passwd –n days usrname 指定使用者最短使用期限

    3.passwd –x days username 指定使用者最長使用期限

    4.passwd –w days username 指定使用者提前警告期限

    5.passwd –I days username 指定使用者非活動期限

    6.passwd –l(愛奧) username 鎖定使用者登入

    7.passwd –u username 解鎖使用者

    8.passwd –stdin username xxxx 從标準輸入擷取密碼參數

    gpasswd

    1.gpasswd groupname 添加組密碼

    2.gpasswd –a GID/組名 将使用者添加至組中

    3.gpasswd –d user 不做user的附加組

    4.gpasswd –A username1 username2 指定此組有管理權限的使用者

    5.gpasswd –r groupname 删除密碼

    newgrp

    1.newgrp groupname 臨時切換至此組中(此組需要有密碼)exit 退出

    chmod

    1.chmod umask file 修改檔案權限

    2.chmod u+(r,w,x,s) g+(r,w,x,s) o+(r,w,x,t) file 修改檔案權限

    3.chmod –R (1.|2.) /directory 遞歸修改權限

    4.chmod –reference=file1 file2 用file1為模闆修改file2的權限

    chown

    1.chown user:group file 修改檔案屬主屬組

    2.chown –reference=file1 file2 用file1為模闆修改file2的屬主屬組

    iptables

    1.-t iptables –t filter/nat/mangle/raw 操作指定的表,預設是filter

    2.-L iptables –t filter –L INPUT 4 –n –v -x –-line-numbers 列印filter表中INPUT鍊上的第4條規則

    –n 用數字方式顯示源IP/目的IP,用端口号方式顯示服務

    -v 詳細資訊顯示 –vv 更詳細 –vvv 更更詳細

    -x 列印計數器結果精确值,和-vv連用才又意義

    –line-numbres 顯示規則編号

    2.1-Z iptables –t filter 清零filter表上的計數器

    3.-A添加 iptables –t filter –A INPUT/OUTPUT/FORWARD/

    PREROUTING/POSTROUTING

    向filter表中的input/output/forward/prerouting/Postrouting鍊添加新規則

    3.1-N自定義新的鍊 iptables –t filter –N newlink 在filter表自定義新鍊newlink

    3.2-X 删除自定義鍊 iptables –t filter –X newlink 删除自定義鍊newlink

    3.3-E 重命名自定義鍊 iptables –t filter –E newlink newname

    4.-I插入 iptables –t filter –I INPUT 7 規則 将規則插入到filter表INPUT鍊的第7條

    5.-P預設政策 iptables –t filter –P INPUT ACCEPT/DROP/REJECT 指定filter表的INPUT鍊設定預設政策

    6.-D删除 iptables –t filter –D INPUT 6 删除filter表INPUT鍊上的第6條規則

    7.iptables –F 清空所有規則

    8.-R替換 iptables -t filter –s 192.168.0.254/24 –p tcp -–dport 80 –j REJECT –R INPUT 2

    将filter表INPUT鍊的第2條規則替換掉

    規則定義

    1.iptables –t filter –A INPUT –s 192.168.0.254 –d 192.168.0.61

    –p {tcp/udp/icmp} –m multiport (–-sport 預設為全部端口) –-dport 80,22,21 –j ACCEPT

    -s 源位址精确比對 或者192.168.0.0/24網絡位址比對

    -d 目的位址精确比對 或者192.168.0.0/24網絡位址比對

    -m 擴充規則 –p為隐式擴充不需要-m

    -p 協定 tcp udp icmp

    -m multiport 支援一次定義最多15個端口

    –sport –-dport 源端口目的端口,不寫為預設,預設所有

    -j 處理政策

    TARGET 交給自定義鍊處理

    PRTURN 傳回調用鍊,定義在自定義鍊中,處理後傳回結構給标準鍊

    ACCEPT 接受; DROP 丢棄; REJECT 拒絕; LOG 記錄;

    MARK mark 打标記,其他程序可引用此标記

    REDIRECT port 端口重定向

    MASQUERADE IP 位址僞裝

    DNAT 目标位址轉換; SNAT 源位址轉換

    2.iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m iprange –-src-range 192.168.0.1-192.168.0.254 -j ACCEPT

    -m iprange 支援位址範圍

    –scr-range源位址範圍 --dst-range目的位址範圍

  2. iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m string –-algo bm|kmp –-string “move” –j ACCEPT

    -m string 支援檢查文法 –-algo檢查文法時使用的算法 bm/kmp

    –string比對的字元串

  3. iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m time

    –timestart 14:00 –-timestop 16:00 –j ACCEPT

    -m time 僅接受14:00到16:00的通路

    –timestart開始時間 --timestop結束時間

    –datestart開始日期 –-datestop 結束日期

    –monthdays月份 --weekdays周幾

  4. iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m state NEW,ESTABISHED –j ACCEPT

    -m state 支援連接配接狀态檢查

    /proc/sys/net/nf_conntrack_max 修改最大追蹤連接配接數

    NEW 建立立的連接配接

    ESTABLISHD 在NEW之後且NEW未失效之前的連接配接(響應封包)

    RELATED 相關的連接配接,比如TCP的控制連接配接和資料連接配接

    INVALIED 無法識别的連接配接

    ipvsadm lvs配置

    1.-A添加排程服務 ipvsadm –A –t/u/(f mask) 192.168.0.1:80 –s wrr

    -A 添加排程服務,主機192.168.0.1端口80

    -t tcp; -u udp; -f 使用防火牆mask 比對

    –s 排程算法為wrr權重輪詢

    1.1-E 修改排程服務算法 ipvsadm –E –t 192.168.0.1:80 –s sh

    2.-a添加排程規則 ipvsadm –a –t/u/(f mask) 192.168.0.1:80

    –r 192.168.0.61 –m/g –w 3

    -a 在192.1680.1:80的排程服務上添加real-server

    -r 192.168.0.61 指明real-server主機

    -m nat模式; -g dr 模式; -w 3 權重為3

    3.ipvsadm –a –f 10 –t 192.168.0.1:80 –r 192.168.0.61 –m

    -f 10 使用防火牆标記 iptables –A INPUT –s 192.168.0.0/24 –p tcp –-dport 80 –j MASK 10

    3.1-e修改排程規則 ipvsadm –e –t 192.168.0.1:80 –r 192.168.0.61 –w 3

    修改主機權重為3

    4.ipvsadm –S >/file 儲存排程檔案

    5.ipvsadm –R </file 導入排程檔案

    setfacl

    1.setfacl –m u:dump:rwx,g:dump:rwx,o:rwx files 設定dump使用者,組,other對檔案files的權限為rwx

    2.setfacl –m m:w 設定acl mask為w,此mask對user和group起效

    3.setfacl –b a 清空acl設定

    4.setfacl –d –m u:dump:w /dir 設定/dir預設acl,當在/dir下建立檔案時會自動繼承此acl設定

    5.setfacl –M aclfile file 從acl檔案中讀取設定

    6.setfacl –m u:dump:rwx –R /dir 遞歸建立acl規則

    7.setfacl –x u:dump file 删除某條acl規則

    8.setfacl –m m:— file 設定mask為空

    getfacl

    1.getfacl –R a >aclfile 可将acl規則提取出來,制成acl檔案

    find

    1.find –P 跳過符号連接配接

    2.find –L 不跳過符号連接配接

    3.find /etc –iname a* 查找/etc下以a開頭的檔案(不區分大小寫)

    4.find /etc –maxdepth 2 –mindepth 1 最大/最小查找深度

    5.find /etc –gid/group ID/groupname 按照GID群組名查找

    6.find /etc –uid/user ID/username 按照UID和使用者名查找

    7.find /etc –nogroup/nouser 查找沒有屬組/屬主的檔案

    8.find /etc –perm u+/-/=rwx 按登陸使用者/組權限查找

    9.find /etc –size -/+/=3c/k/M/G 按檔案大小查找

    10.find /etc –type b/c/d/f/p/l/s/D 按檔案類型查找

    11.find /etc –cmin 6/-6 查找6分鐘(之前/以内)修改過的檔案

    12.find /etc –used 1 查找1天内被存取過的檔案或目錄

    13.find /etc –cmin 6 |xargs cat 将find 查找到的結果逐行送給cat處理

    fdisk相關

    1.fdisk –l 顯示磁盤分區狀态 df –h 顯示分區使用資訊

    lsblk 樹狀列出磁盤使用及分區資訊

    blkid /dev/sda1 列出sd1格式及ID

    fuser –v /dev/sda1 檢視正在使用此分區的程序, -km 終止此程序

    cat /proc/filesystem 檢視系統支援的檔案系統

    e2label 檢視和設定ext檔案系統label

    2.fdisk /dev/sda 開始分區

    >m 顯示幫助

    >n 建立新分區

    >e 擴充分區

    >p 主分區

    First cylinder (1500-2610, default 1500):開始柱面直接回車,系統自行統計

    Last cylinder, +cylinders or +size{K,M,G} (1500-2610, default 2610): 500M 結束柱面,輸入大小,系統自行計算

    >p 列印分區情況

    >t 修改分區ID

    Partition number (1-5):選擇要修改的分區,隻可選主分區

    Hex code (type L to list codes):82 輸入分區ID,82為swap

    >w 儲存修改,并退出

    >q 直接退出

    後續處理指令

    1.partx /dev/sda 對分區表重新登記

    2.mkfs.(ext2,3,4/vfat等) /dev/sda5 格式化磁盤

    3.fsck.(ext2,3,4/vfat等) /dev/sda5 磁盤檢測修複工具

    4.mkswap /dev/sda3 格式化交換分區

    5.swapon [-a] /dev/sda3 挂在交換分區

    6.swapoff [-a] /dev/sda3 解除安裝交換分區

    mount

    1.mount –o async,user,acl /dev/sda1 /tmp/cd1 挂載檔案系統使用異步模式,并允許普通使用者挂在此裝置,開啟acl功能,在fstable檔案中也可設定,或使用default

    2.mount –o remount,ro /dev/sda1 重新挂載sda1

    3.mount /diretory1 /directory2 挂載diretory1到diretory2上

    Ldd

    1.ldd /usr/sbin/sshd 檢視二進制程式sshd所依賴的庫檔案

    Ln

  5. ln –s /etc/fstable ~/soft 為fstable建立軟連結soft
  6. ln –d /etc/fstable ~/hard 為fstable建立硬連接配接hard

    不加-d 預設建立硬連接配接,硬連接配接相當于複制

    lsmod 顯示核心已加載的子產品

    modinfo 顯示子產品詳細内容

    depmod産生子產品依賴的映射檔案,在建構嵌入式系統時,需要由這個指令來生成相應的檔案,由modprobe使用

  7. depmod –a 調查所有子產品
  8. depmod –A 僅調查新加載的子產品

    modprobe

  9. modprobe e1000 裝在e1000的網卡驅動
  10. modprobe -r e1000 解除安裝e1000網卡驅動
  11. modprobe -l 列印已裝在的核心子產品

    uname

  12. uname –m 輸出系統平台 x86/x64
  13. uname –a 輸出所有

    詳見help

    Sync 強制同步(立刻)同步(superblock/操)作到裝置

    kill=killall

  14. kill –l 顯示所有可使用的信号
  15. kill -signal PID 向指定PID發送指定信号

    常用signal

    1 重讀配置檔案 2 終止=CTRL+C

    9 立刻殺死 15 按程式正常結束(優雅終止)

    18 繼續 19 暫停

    wc

    1.wc –l file 統計行數 2.wc –c file 統計位元組數bt

    3.wc –m file 統計字元數char 4.wc –w file 統計單詞數

    sudo

    1.sudo –u dump commond 使用dump使用者運作commond

    2.sudo –g dump commond 使用dumo組運作commond

    3.sudo –l 列出目前使用者可用指令

    配置檔案/etc/sudoers 預設root無權限,需要修改權限

    dump ALL=(root) cat

    使用者 主機=(暫轉使用者) 指令

    User_Alias user1,user2,…使用者别名組

    Host_Alias IP,主機名 主機名稱組

    Command_Alias 指令别名組

    jobs

    1.CTRL + Z 或 commond + & 進入背景工作

    2.fg + %jobnumber 裝入前台

    3.bg +%jobnumber 讓背景暫停的作業繼續運作

    4.kill +%jobnumber 殺死此作業

    screen

    1.screen –S name 開啟一個name命名的screen

    2.screen –d 背景一個screen 在screen界面起效

    3.screen –ls 顯示所有screen

    4.screen –r 17235 重新連入17235号screen

    5.screen –X ls 17235 傳遞ls指令給17235号screen

    6.screen –U 設定使用UTF-8編碼

  16. screen –-wipe 清理損壞的screen

Screen 界面快捷鍵

ctrl + a + c:建立新視窗(create)

ctrl + a + n:切換至下一個視窗(next)

ctrl + a + p:切換至上一個視窗(previous)

ctrl + a + w: 列出所有視窗

ctrl + a + A: 視窗重命名

ctrl + a + d:detach目前會話

ctrl + a + [1-9]: 切換到指定視窗(1-9為視窗号)

ctrl + d:退出(關閉)目前視窗

Sleep

1.sleep 10s/m/h/d PID/commond 睡眠或延時執行

crontab

1.crontab –l 列出所有計劃任務

2.crontab –e 設定計劃任務

3.crontab –r 清除計劃任務

分 時 周 月 年

2 15 * 12 * 每年12的每天15:02分執行

at

at time [回車]

ls /

CTRL +D 送出

  1. at –d 删除
  2. at –f 從檔案中讀取任務
  3. at –l 列出
  4. at –c 檢視具體任務

    at now + 5 minutes 任務在5分鐘後運作

    at now + 1 hour 任務在1小時後運作

    at now + 3 days 任務在3天後運作

    at now + 2 weeks 任務在兩周後運作

    at midnight 任務在午夜運作

    at 10:30pm 任務在晚上10點30分

    at 23:59 12/31/2018   任務在2018年12月31号23點59分

    batch 讓系統在空閑時選擇時間自動執行

  5. batch [回車]

    at>…

    at>ctrl + D

    tar

    1.-c 建立 2.-x 解壓 3.-f 檔案 4.-C 指明檔案存放路徑

    5.-v 顯示過程

    -j, --bzip2

    -z, --gzip, --gunzip, --ungzip

    -J, --xz --lzip --lzma --lzop

    例:tar –czvf /file –C /tmp/file.tar.gz

    ssh

    1.ssh [email protected] –P 9000 指明端口登陸

    2.ssh-keygen –t rsa –p ***** -f ~/.ssh 使用rsa加密方式産生一對密鑰,密碼是*****,存在~/.ssh中

    3.ssh-copy-id –i ~/.ssh/id_rsa.pub [email protected]

    将公鑰上傳至遠端主機,開啟免密碼登入

    openssl

  6. openssl passwd -1 –salt 8位雜質 ******* 生成密文密碼

    md5格式 雜質參數

    2.openssl rand -hex 4 (hex 4:2*4=8位) 産生8位随機數

  7. openssl genrsa –out keyfile 2048 生成一對2048位的密鑰檔案
  8. openssl rsa –in keyfile –public 從密鑰檔案中提取公鑰

    scp

    1.scp –p [email protected]:/file /tmp 從192.168.0.61複制檔案到本地

    2.scp -p /file [email protected]:/tmp 從本複制檔案至192.168.0.1主機

    (1)-r 遞歸複制 (2)-p 保留屬性 (3)-p 9000 指明ssh端口

    ftp相關

    1.finger ftp 探測ftp使用者全部資訊

    2.lftpget –c 192.168.0.1/file 使用斷點續傳下載下傳

    3.ftp下的mget.mput 支援一次下載下傳/上傳多個檔案

    文本處理

    cut

  9. last |cut -d ’ ’ -f 1 以空白為分隔符,取出第一段資料
  10. last |cut -c 10-20 輸出每一行第10到第20個字元

    send –options ‘cmd’

    options

    1.-n 靜默模式 2.-f 從檔案中讀sed參數 3.-e 在指令行輸入sed參數

    4.直接修改讀取的檔案内容 5.-r 支援擴充正則表達

  11. lastb |sed ‘2,3d’ 删除2到3行 d删除
  12. lastb |sed ‘2a 123456’ 在第2行下面加上一行123456 a添加
  13. lastb |sed ‘2i 123456’ 在第2行上面加上一行123456 i插入
  14. lastb |sed -n ‘2p’ 隻列印第二行,-n靜默模式不向螢幕輸出 p列印
  15. lastb |sed ‘2c null’ 使用null取代第二行 c取代
  16. lastb |sed -n ‘/:1/,/ssh/p’ 也可使用比對含有/:1/的行到含有/ssh/的第一行,所有選項通配
  17. lastb |sed ‘s/test/root/g’ 将所有的test替換成root

    awk

  18. last -n 5|awk ‘{FS=“254”} {print $1"\n"}’ FS設定分隔符為”254”,然後列印第一列,每一行都換行
  19. last -n 5|awk ‘{FS=“254”}{if(NR==1)print $1"\n"}’ NR行數,隻對第一行操作,并輸出
  20. last -n 5|awk ‘{FS=“p”}{if(NR>=1)print NF}’ NF每行擁有的字段總數
  21. last -n 5|awk ‘{FS=" "} {if($6>8) print $4,$8,$9}’ 每行第六個字段大于8的輸出,第4,8,9字段
  22. cat 1|awk '{FS=":"}{if(NR==2) print sum=$1+$2+KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲' 計算第二行,第1,2,3… 上一條指令的最後一個參數(ESC+.)

    xshell下的正規表達式

    1.ll –d /etc/a??? 顯示以a開頭後面有3個字元的檔案夾

    2.ll –d /etc/a* 顯示以a開頭所有檔案夾

    3.ll –d /etc/[a-c]* 顯示以a,b,c開頭的所有檔案夾

    4.ll –d /etc/[^a-c]* 顯示不以a,b,c開頭的所有其他檔案夾

    5.echo $(uname -r) 指令傳回值替換

  23. a=123456; ${a:3:4} 從3切片并向右取4位

    7.a=123456; ${a:3:-4}從3切開并将右邊的部分,從右向左删除2位

    8.a=abc; ${a^^} 小寫轉大寫

    9.a=ABC; ${a,} 大寫轉小寫

    10a; ${a:-null} a空,傳回null .

    11.a=value; a : − n u l l a 不 空 , 返 回 v a l u e 12. {a:-null} a不空,傳回value 12. a:−nulla不空,傳回value12.{a:n} 若a空,則a=n

繼續閱讀