Linux經常使用服務器部署命令

Linux命令大全vue

前言

在平常開發中咱們會作一些服務器部署的工做,對於開發來講,運維部署並非咱們的專項;有些命令不是常用,很快就會忘記;在這總結一下平常部署時經常使用的一些運維命令。node

文件操做

tail

tail 命令可用於查看文件的內容,有一個經常使用的參數 -f 經常使用於查閱正在改變的日誌文件。linux

命令格式:ios

tail [參數] [文件]

參數:web

  • -f 循環讀取
  • -q 不顯示處理信息
  • -v 顯示詳細的處理信息
  • -c<數目> 顯示的字節數
  • -n<行數> 顯示文件的尾部 n 行內容
  • --pid=PID 與-f合用,表示在進程ID,PID死掉以後結束
  • -q, --quiet, --silent 從不輸出給出文件名的首部
  • -s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒

示例正則表達式

image-20191213103608175

image-20191213103723510

通常咱們及時使用-f參數實時監控服務器日誌。shell

ll命令

ll並非linux下一個基本的命令,它其實是ls -l的一個別名。編程

Ubuntu默認不支持命令ll,必須用 ls -l,這樣使用起來不是很方便。json

image-20191213105629006

一、文件類型centos

  • 「-」表示普通文件;
  • 「d」表示目錄;
  • 「l」表示連接文件;
  • 「p」表示管理文件;
  • 「b」表示塊設備文件;
  • 「c」表示字符設備文件;
  • 「s」表示套接字文件;

二、文件屬性

  • r(Read,讀取權限):對文件而言,具備讀取文件內容的權限;對目錄來講,具備瀏覽目錄的權限。
  • w(Write,寫入權限):對文件而言,具備新增、修改文件內容的權限;對目錄來講,具備刪除、移動目錄內文件的權限。
  • x(eXecute,執行權限):對文件而言,具備執行文件的權限;對目錄來講,該用戶具備進入目錄的權限。
    另外,這裏還有2個很特殊的屬性,平時不怎麼
  • s或S(SUID,Set UID):可執行的文件搭配這個權限,便能獲得特權,任意存取該文件的全部者能使用的所有系統資源。請注意具有SUID權限的文件,黑客常常利用這種權限,以SUID配上root賬號擁有者,無聲無息地在系統中開扇後門,供往後進出使用。
  • t或T(Sticky):/tmp和 /var/tmp目錄供全部用戶暫時存取文件,亦即每位用戶皆擁有完整的權限進入該目錄,去瀏覽、刪除和移動文件。

三、目錄/文件個數

對於目錄文件,表示它的第一級子目錄的個數。注意此處看到的值要減2纔等於該目錄下的子目錄的實際個數。4

四、全部者/分組

表示該文件的全部者/建立者(owner)及其所在的組(group)。

五、文件大小

若是是文件,則表示該文件的大小,單位爲字節。
若是是目錄,則表示該目錄符所佔的大小,並不表示該目錄下全部文件的大小。

六、修改日期

該文件最後修改的日期時間。

七、文件名稱

ln命令

centos下的ln命令就至關於window下的創建快捷方式,連接文件甚至能夠連接不存在的文件,這就產生通常稱之爲」斷鏈」的現象,連接文件甚至能夠循環連接本身。 相似於編程語言中的遞歸。
軟連接文件只是其源文件的一個標記,當刪除了源文件後,連接文件不能獨立存在,雖然仍保留文件名,但卻不能查看軟連接文件的內容了。

ln -s 源文件 目標文件

ln -s /opt/soft/node-v8.9.0-linux-x64/bin/vuepress /usr/bin

-s 是代號(symbolic)的意思

  1. ln命令會保持每一處連接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化
  2. ln的連接又軟連接 和硬連接兩種,軟連接就是ln -s xx xx,它只會在你選定的位置上生成一個文件的鏡像,不會佔用磁盤空間,硬連接ln ,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,不管是軟連接仍是硬連接,文件都保持同步變化。

參數

  • -b 刪除,覆蓋之前創建的連接
  • -d 容許超級用戶製做目錄的硬連接
  • -f 強制執行
  • -i 交互模式,文件存在則提示用戶是否覆蓋
  • -n 把符號連接視爲通常目錄
  • -s 軟連接(符號連接)
  • -v 顯示詳細的處理過程

cp命令

cp [選項] 源文件(source) 目標文件或者目錄(destination)

  • -a: 是指archive的意思,也說是指複製全部的目錄
  • -d: 若源文件爲鏈接文件(link file),則複製鏈接文件屬性而非文件自己
  • -f: 強制(force),如有重複或其它疑問時,不會詢問用戶,而強制複製
  • -i: 若目標文件(destination)已存在,在覆蓋時會先詢問是否真的操做
  • -l: 創建硬鏈接(hard link)的鏈接文件,而非複製文件自己
  • -p: 與文件的屬性一塊兒複製,而非使用默認屬性
  • -r: 遞歸複製,用於目錄的複製操做
  • -s: 複製成符號鏈接文件(symbolic link),即「快捷方式」文件
  • -u: 若目標文件比源文件舊,更新目標文件
cp -f package.json ./backup

mv命令

mv [選項] source destination

  • -f: force,強制直接移動而不詢問
  • -i: 若目標文件(destination)已經存在,就會詢問是否覆蓋
  • -u: 若目標文件已經存在,且源文件比較新,纔會更新

系統監控命令

內存監控

free命令

image-20191213111344785

Linux free命令用於顯示內存狀態。

free指令會顯示內存的使用狀況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩衝區等。

語法

free [-bkmotV][-s <間隔秒數>]

參數說明

  • -b  以Byte爲單位顯示內存使用狀況。
  • -k  以KB爲單位顯示內存使用狀況。
  • -m  以MB爲單位顯示內存使用狀況。
  • -h  以合適的單位顯示內存使用狀況,最大爲三位數,自動計算對應的單位值。單位有:

    B = bytes
    K = kilos
    M = megas
    G = gigas
    T = teras
  • -o  不顯示緩衝區調節列。
  • -s<間隔秒數>  持續觀察內存使用情況。
  • -t  顯示內存總和列。
  • -V  顯示版本信息。

Men:表示物理內存統計

Swap:表示硬盤上交換分區的使用狀況

total:表示物理內存總數(total=used+free)
used:表示系統分配給緩存使用的數量(這裏的緩存包括buffer和cache)
free:表示未分配的物理內存總數
shared:表示共享內存
buffers:系統分配但未被使用的buffers 數量。
cached:系統分配但未被使用的cache 數量。
-/+ buffers/cache:表示物理內存的緩存統計

(-buffers/cache) 內存數: (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) 內存數: (指的第一部分Mem行中的free + buffers + cached)
(-buffers/cache)表示真正使用的內存數, (+buffers/cache) 表示真正未使用的內存數

vmstat命令

vmstat(Virtual Meomory Statistics,虛擬內存統計)是對系統的總體狀況進行統計,包括內核進程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。

經常使用命令

vmstat 2 2 【在2秒時間內進行2次採樣】

image-20191213140826375

參數

Procs(進程):

  • r:運行隊列中進程數量
  • b:等待IO的進程數量

Memory(內存):

  • swpd: 使用虛擬內存大小
  • free: 可用內存大小
  • buff: 用做緩衝的內存大小
  • cache: 用做緩存的內存大小

Swap:

  • si: 每秒從交換區寫到內存的大小
  • so: 每秒寫入交換區的內存大小

IO:(如今的Linux版本塊的大小爲1024bytes)

  • bi: 每秒讀取的塊數
  • bo: 每秒寫入的塊數

system(系統):

  • in: 每秒中斷數,包括時鐘中斷。【interrupt】
  • cs: 每秒上下文切換數。 【count/second】

CPU(以百分比表示):

  • us: 用戶進程執行時間(user time)
  • sy: 系統進程執行時間(system time)
  • id: 空閒時間(包括IO等待時間),中央處理器的空閒時間 。以百分比表示。
  • wa: 等待IO時間

CPU監控

top命令

top命令能夠實時動態地查看系統的總體運行狀況,是一個綜合了多方信息監測系統性能和運行信息的實用工具

使用權限:全部使用者。

語法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

參數說明

  • d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
  • q : 沒有任何延遲的顯示速度,若是使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
  • c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另外一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
  • s : 安全模式,將交談式指令取消, 避免潛在的危機
  • i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
  • n : 更新的次數,完成後將會退出 top
  • b : 批次檔模式,搭配 "n" 參數一塊兒使用,能夠用來將 top 的結果輸出到檔案內

    image-20191213111809397

mpstat命令

mpstat是 Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPU系統裏,其不但能查看全部CPU的平均情況信息,並且可以查看特定CPU的信息。

經常使用命令

mpstat -P ALL 2 【ALL表示顯示全部CPUs,也能夠指定某個CPU;2表示刷新間隔】

image-20191213141621315

參數

  • CPU:處理器ID
  • %usr 在internal時間段裏,用戶態的CPU時間(%),不包含 nice值爲負進程
  • %nice 在internal時間段裏,nice值爲負進程的CPU時間(%)
  • %sys 在internal時間段裏,核心時間(%)
  • %iowait 在internal時間段裏,硬盤IO等待時間(%)
  • %irq 在internal時間段裏,硬中斷時間(%)
  • %soft 在internal時間段裏,軟中斷時間(%)
  • %steal 顯示虛擬機管理器在服務另外一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比
  • %guest 顯示運行虛擬處理器時CPU花費時間的百分比
  • %idle 在internal時間段裏,CPU除去等待磁盤IO操做外的由於任何緣由而空閒的時間閒置時間(%)

進程監控

ps命令

ps命令用於查看進程統計信息

經常使用參數:

  • a:顯示當前終端下的全部進程信息,包括其餘用戶的進程。
  • u:使用以用戶爲主的格式輸出進程信息。
  • x:顯示當前用戶在全部終端下的進程。
  • -e:顯示系統內的全部進程信息。
  • -l:使用長(long)格式顯示進程信息。
  • -f:使用完整的(full)格式顯示進程信息。

ps -aux

最經常使用的方法是ps -aux,而後再利用一個管道符號導向到grep去查找特定的進程,而後再對特定的進程進行操做。

image-20191213112328721

列說明:

  • USER: 用戶名
  • PID: 進程ID(Process ID)
  • %CPU: 進程的cpu佔用率
  • %MEM: 進程的內存佔用率
  • VSZ: 進程所使用的虛存的大小(Virtual Size)
  • RSS: 進程使用的駐留集大小或者是實際內存的大小,Kbytes字節。
  • TTY: 與進程關聯的終端(tty)
  • STAT: 進程的狀態:進程狀態使用字符表示的(STAT的狀態碼)
  • TIME: 進程使用的總cpu時間
  • COMMAND: 正在執行的命令行命令

ps -ef

image-20191213112434230

  • UID: 用戶ID(User ID)
  • PID: 進程ID(Process ID)
  • PPID: 父進程的進程ID(Parent Process id)
  • STIME: 啓動時間
  • TTY: 與進程關聯的終端(tty)
  • TIME: 進程使用的總cpu時間
  • CMD: 正在執行的命令行命令

ps -ef | grep

| 符號,是個管道符號,表示ps 和 grep 命令同時執行;

grep 命令是查找(Global Regular Expression
Print),能使用正則表達式搜索文本,而後把匹配的行顯示出來;

image-20191213112931855

ps -l

image-20191213112521888

  • F: 表明這個程序的旗標 (flag), 4 表明使用者爲 super user
  • S: 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的造成或接受到信號。
  • UID: 用戶ID(User ID)
  • PID: 進程ID(Process ID)
  • PPID: 父進程的進程ID(Parent Process id)
  • C: CPU 使用的資源百分比
  • PRI: 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹
  • NI: 這個是 Nice 值,在下一小節咱們會持續介紹
  • ADDR: 這個是 kernel function,指出該程序在內存的那個部分。若是是個 running的程序,通常就是 "-"
  • SZ: 使用掉的內存大小
  • WCHAN: 目前這個程序是否正在運做當中,若爲 - 表示正在運做
  • TTY: 登入者的終端機位置
  • TIME: 使用掉的 CPU 時間。
  • CMD 所下達的指令爲什麼

其餘

查看進程的啓動時間:
ps -eo lstart 啓動時間

查看進程的運行時間
ps -eo etime 運行多長時間.

查看進程的pid、啓動時間、運行時間
ps -eo pid,lstart,etime | grep [ pid ]

pstree命令

以樹狀圖的方式展示進程之間的派生關

  • pstree -p 顯示當前全部進程的進程號和進程id
  • pstree -a 顯示全部進程的全部詳細信息,遇到相同的進程名能夠壓縮顯示。

pidof命令

查找正在運行進程的PID

image-20191213143350781

其餘

uptime:顯示系統總共運行了多長時間和系統的平均負載

image-20191213143707179

pmap:比較專業的查看內存與進程對應關係工具

image-20191213143920584

磁盤監控

df命令

image-20191213114301424

  • df -h查看磁盤使用狀況
  • df -i 查看inode使用狀況

du命令

Linux du命令用於顯示目錄或文件的大小。

du會顯示指定的目錄或文件所佔用的磁盤空間。

參數說明

  • -a或-all 顯示目錄中個別文件的大小。
  • -b或-bytes 顯示目錄或文件大小時,以byte爲單位。
  • -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示全部目錄或文件的總和。
  • -D或--dereference-args 顯示指定符號鏈接的源文件大小。
  • -h或--human-readable 以K,M,G爲單位,提升信息的可讀性。
  • -H或--si 與-h參數相同,可是K,M,G是以1000爲換算單位。
  • -k或--kilobytes 以1024 bytes爲單位。
  • -l或--count-links 重複計算硬件鏈接的文件。
  • -L<符號鏈接>或--dereference<符號鏈接> 顯示選項中所指定符號鏈接的源文件大小。
  • -m或--megabytes 以1MB爲單位。
  • -s或--summarize 僅顯示總計。
  • -S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。
  • -x或--one-file-xystem 以一開始處理時的文件系統爲準,若趕上其它不一樣的文件系統目錄則略過。
  • -X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。
  • --exclude=<目錄或文件> 略過指定的目錄或文件。
  • --max-depth=<目錄層數> 超過指定層數的目錄後,予以忽略。
  • --help 顯示幫助。
  • --version 顯示版本信息。

iostat命令

ostat是一個用於收集顯示系統存儲設備輸入和輸出狀態統計的簡單工具。這個工具經常用來追蹤存儲設備的性能問題,其中存儲設備包括設備、本地磁盤,以及諸如使用NFS等的遠端磁盤。

經常使用命令:

iostat -x -k 2 100 # 2表示刷新間隔,100表示刷新次數

image-20191213144330124

iostat主要是用來監控磁盤I/O,首先輸出了CPUs的平均數據(avg-cpu),咱們能夠看%iowait這一項,除此以外iostat還提供了一些更詳細的I/O狀態數據

參數

  • /s: 每秒完成的讀 I/O 設備次數。
  • w/s: 每秒完成的寫 I/O 設備次數。
  • rkB/s: 每秒讀K字節數.是 rsect/s 的一半,由於每扇區大小爲512字節。
  • wkB/s: 每秒寫K字節數.是 wsect/s 的一半。
  • avgrq-sz: 平均每次設備I/O操做的數據大小 (扇區)。
  • avgqu-sz: 平均I/O隊列長度。
  • await: 平均每次設備I/O操做的等待時間 (毫秒)。
  • svctm: 平均每次設備I/O操做的服務時間 (毫秒)。
  • %util: 一秒中有百分之多少的時間用於 I/O 操做,或者說一秒中有多少時間 I/O 隊列是非空的。

網絡監控

sar命令

SAR是一個在Unix和Linux操做系統中用來收集、報告和保存CPU、內存、輸入輸出端口使用狀況的命令。SAR命令能夠動態產生報告,也能夠把報告保存在日誌文件中。

經常使用命令

sar -n DEV 3 100

image-20191213145707669

參數

  • IFACE:網絡設備的名稱
  • rxpck/s:每秒鐘接收到的包數目
  • txpck/s:每秒鐘發送出去的包數目
  • rxkB/s:每秒鐘接收到的字節數
  • txkB/s:每秒鐘發送出去的字節數

netstat命令

netstat命令通常用於檢驗本機各端口的網絡鏈接狀況,用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據。

配置參數

  • -a, --all, --listening 顯示全部鏈接中的Socket。
  • -n, --numeric 以數字形式顯示地址和端口號。
  • -t, -–tcp 顯示TCP傳輸協議的連線情況。
  • -u, -–udp 顯示UDP傳輸協議的連線情況。
  • -p, --programs 顯示正在使用socket的程序名/進程ID
  • -l, --listening 顯示監控中的服務器的Socket。
  • -o, --timers 顯示計時器。
  • -s, --statistics 顯示每一個網絡協議的統計信息(好比SNMP)
  • -i, --interfaces 顯示網絡界面信息表單(網卡列表)
  • -r, --route 顯示路由表

經常使用命令

netstat -aup 【輸出全部UDP鏈接情況】

image-20191213150018810

  • netstat -aup # 輸出全部UDP鏈接情況
  • netstat -atp # 輸出全部TCP鏈接情況
  • netstat -s # 顯示各個協議的網絡統計信息
  • netstat -i # 顯示網卡列表
  • netstat -r # 顯示路由表信息
查看全部80端口的鏈接數
netstat -nat|grep -i 「80」|wc -l
對鏈接的IP按鏈接數量進行排序
netstat -anp | grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
netstat -ntu | awk ‘{print $5}’ | egrep -o 「[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}」 | sort | uniq -c | sort -nr
查看TCP鏈接狀態
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,」\t」,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,」\t」,arr[k]}’
netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]’ | sort | uniq -c
查看80端口鏈接數最多的20個IP
cat /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
tail -n 10000 /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
cat /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk ‘/:80/{split($5,ip,」:」);++A[ip[1]]}END{for(i in A) print A,i}’ |sort -rn|head -n20
用tcpdump嗅探80端口的訪問看看誰最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F」.」 ‘{print $1″.」$2″.」$3″.」$4}’ | sort | uniq -c | sort -nr |head -20
查找較多time_wait鏈接
netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20
查找較多的SYN鏈接
netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more
linux下實用iptables封ip段的一些常見命令:
封單個IP的命令是:
iptables -I INPUT -s 211.1.0.0 -j DROP
封IP段的命令是:
iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP
封整個段的命令是:
iptables -I INPUT -s 211.0.0.0/8 -j DROP
封幾個段的命令是:
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP

重啓網絡

service network restart
相關文章
相關標籤/搜索