Linux常用運維命令筆記整理(重新排版)

在linux服務器開發過程中, 經常需要各種命令配合來查看各種狀態,所以整理了一些老的筆記來備忘。

iostat

iostat主要用於監控系統設備的IO負載情況,iostat首次運行時顯示自系統啓動開始的各項統計信息,之後運行iostat將顯示自上次運行該命令以後的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息

  • -c 僅顯示CPU統計信息.與-d選項互斥.
  • -d 僅顯示磁盤統計信息.與-c選項互斥.
  • -k 以K爲單位顯示每秒的磁盤請求數,默認單位塊.
  • -t 在輸出數據時,打印蒐集數據的時間.
  • -V 打印版本號和幫助信息.
  • -x 輸出擴展信息.

iostat常用用法1:iostat -d

指定採樣時間間隔與採樣次數

我們可以以”iostat interval [count] ”形式指定iostat命令的採樣間隔和採樣次數:

linux # iostat -d 1 2
Linux 2.6.16.60-0.21-smp (linux)     06/13/12

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.55         8.93        36.27    6737086   27367728
sdb               0.00         0.00         0.00        928          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.00         0.00        72.00          0         72
sdb               0.00         0.00         0.00          0          0

以上命令輸出Device的信息,採樣時間爲1秒,採樣2次,若不指定採樣次數,則iostat會一直輸出採樣信息,直到按”ctrl+c”退出命令。注意,第1次採樣信息與單獨執行iostat的效果一樣,爲從系統開機到當前執行時刻的統計信息。


iostat常用用法2: iostat -x -k -d

linux # iostat -x -k -d 1
Linux 2.6.16.60-0.21-smp (linux)     06/13/12

……
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00  9915.00    1.00   90.00     4.00 34360.00   755.25    11.79  120.57   6.33  57.60

以上各列的含義如下:

  • rrqm/s: 每秒對該設備的讀請求被合併次數,文件系統會對讀取同塊(block)的請求進行合併
  • wrqm/s: 每秒對該設備的寫請求被合併次數
  • r/s: 每秒完成的讀次數
  • w/s: 每秒完成的寫次數
  • rkB/s: 每秒讀數據量(kB爲單位)
  • wkB/s: 每秒寫數據量(kB爲單位)
  • avgrq-sz:平均每次IO操作的數據量(扇區數爲單位)
  • avgqu-sz: 平均等待處理的IO請求隊列長度
  • await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒爲單位)
  • svctm: 平均每次IO請求的處理時間(毫秒爲單位)
  • %util: 採用週期內用於IO操作的時間比率,即IO隊列非空的時間比率

對於以上示例輸出,我們可以獲取到以下信息:

每秒向磁盤上寫30M左右數據(wkB/s值)
每秒有91次IO操作(r/s+w/s),其中以寫操作爲主體
平均每次IO請求等待處理的時間爲120.57毫秒,處理耗時爲6.33毫秒
等待處理的IO請求隊列中,平均有11.79個請求駐留

netstat

netstat命令用來打印Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。

  • -a或–all:顯示所有連線中的Socket;
  • -A<網絡類型>或–<網絡類型>:列出該網絡類型連線中的相關地址;
  • -c或–continuous:持續列出網絡狀態;
  • -C或–cache:顯示路由器配置的快取信息;
  • -e或–extend:顯示網絡其他相關信息;
  • -F或–fib:顯示FIB;
  • -g或–groups:顯示多重廣播功能羣組組員名單;
  • -h或–help:在線幫助;
  • -i或–interfaces:顯示網絡界面信息表單;
  • -l或–listening:顯示監控中的服務器的Socket;
  • -M或–masquerade:顯示僞裝的網絡連線;
  • -n或–numeric:直接使用ip地址,而不通過域名服務器;
  • -N或–netlink或–symbolic:顯示網絡硬件外圍設備的符號連接名稱;
  • -o或–timers:顯示計時器;
  • -p或–programs:顯示正在使用Socket的程序識別碼和程序名稱;
  • -r或–route:顯示Routing Table;
  • -s或–statistice:顯示網絡工作信息統計表;
  • -t或–tcp:顯示TCP傳輸協議的連線狀況;
  • -u或–udp:顯示UDP傳輸協議的連線狀況;
  • -v或–verbose:顯示指令執行過程;
  • -V或–version:顯示版本信息;
  • -w或–raw:顯示RAW傳輸協議的連線狀況;
  • -x或–unix:此參數的效果和指定”-A unix”參數相同;
  • –ip或–inet:此參數的效果和指定”-A inet”參數相同。

netstat常用用法:netstat -anlp

netstat -anlpt的含義是 : 列出所有處於使用tcp協議的 Sockets

b@b-VirtualBox:~$ sudo netstat -anlpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1075/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      935/sshd        
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2271/cupsd      
tcp6       0      0 :::22                   :::*                    LISTEN      935/sshd        
tcp6       0      0 ::1:631                 :::*                    LISTEN      2271/cupsd      
tcp6       1      0 ::1:50654               ::1:631                 CLOSE_WAIT  1027/cups-browsed

查看udp的就是netstat -anlpu;
只查看tcp和udp的就是netstat -anlptu

lsof (list open files)

lsof命令用於查看你進程開打的文件,打開文件的進程,進程打開的端口(TCP、UDP)。找回/恢復刪除的文件。是十分方便的系統監視工具,因爲lsof命令需要訪問核心內存和各種文件,所以需要root用戶執行。

在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
所以如傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 套接字等,系統在後臺都爲該應用程序分配了一個文件描述符,無論這個文件的本質如何,該文件描述符爲應用程序與基礎操作系統之間的交互提供了通用接口。
因爲應用程序打開文件的描述符列表提供了大量關於這個應用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統監測以及排錯將是很有幫助的。

  • -a:列出打開文件存在的進程;
  • -c<進程名>:列出指定進程所打開的文件;
  • -g:列出GID號進程詳情;
  • -d<文件號>:列出佔用該文件號的進程;
  • +d<目錄>:列出目錄下被打開的文件;
  • +D<目錄>:遞歸列出目錄下被打開的文件;
  • -n<目錄>:列出使用NFS的文件;
  • -i<條件>:列出符合條件的進程。(4、6、協議、:端口、 @ip ) -p<進程號>:列出指定進程號所打開的文件;
  • -u:列出UID號進程詳情;
  • -h:顯示幫助信息;
  • -v:顯示版本信息
  • -R: 顯示PPID(父進程ID)

lsof常用用法1:lsof -p

ps -ef |grep sshd|grep -v grep| awk ‘{print $2}’|xargs sudo lsof -p的含義是:
列出sshd進程打開的所有文件描述符

b@b-VirtualBox:~$ ps -ef |grep sshd|grep -v grep| awk '{print $2}'|xargs sudo lsof -p
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
sshd    935 root  cwd    DIR    8,1     4096      2 /
sshd    935 root  rtd    DIR    8,1     4096      2 /
sshd    935 root  txt    REG    8,1   770944 301274 /usr/sbin/sshd
sshd    935 root  mem    REG    8,1    43616 136982 /lib/x86_64-linux-gnu/libnss_files-2.19.so
sshd    935 root  mem    REG    8,1    47760 136992 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
sshd    935 root  mem    REG    8,1    39824 136978 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
sshd    935 root  mem    REG    8,1   101240 137033 /lib/x86_64-linux-gnu/libresolv-2.19.so
sshd    935 root  mem    REG    8,1    14256 136950 /lib/x86_64-linux-gnu/libkeyutils.so.1.4
sshd    935 root  mem    REG    8,1    43672 403209 /usr/lib/x86_64-linux-gnu/libkrb5support.so.0.1
sshd    935 root  mem    REG    8,1   186824 403203 /usr/lib/x86_64-linux-gnu/libk5crypto.so.3.1
sshd    935 root  mem    REG    8,1    31792 137035 /lib/x86_64-linux-gnu/librt-2.19.so
sshd    935 root  mem    REG    8,1   141574 137027 /lib/x86_64-linux-gnu/libpthread-2.19.so
sshd    935 root  mem    REG    8,1   252032 137010 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
sshd    935 root  mem    REG    8,1    14664 136924 /lib/x86_64-linux-gnu/libdl-2.19.so
sshd    935 root  mem    REG    8,1    97296 136976 /lib/x86_64-linux-gnu/libnsl-2.19.so
sshd    935 root  mem    REG    8,1  1840928 136907 /lib/x86_64-linux-gnu/libc-2.19.so
sshd    935 root  mem    REG    8,1    14592 136916 /lib/x86_64-linux-gnu/libcom_err.so.2.1
sshd    935 root  mem    REG    8,1   831616 403207 /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
sshd    935 root  mem    REG    8,1   290520 403037 /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2
sshd    935 root  mem    REG    8,1    43368 136917 /lib/x86_64-linux-gnu/libcrypt-2.19.so
sshd    935 root  mem    REG    8,1   100728 137070 /lib/x86_64-linux-gnu/libz.so.1.2.8
sshd    935 root  mem    REG    8,1    10680 137062 /lib/x86_64-linux-gnu/libutil-2.19.so
sshd    935 root  mem    REG    8,1  1934624 136919 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
sshd    935 root  mem    REG    8,1   281552 136921 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.6
sshd    935 root  mem    REG    8,1    14536 440884 /usr/lib/x86_64-linux-gnu/libck-connector.so.0.0.0
sshd    935 root  mem    REG    8,1   134296 137037 /lib/x86_64-linux-gnu/libselinux.so.1
sshd    935 root  mem    REG    8,1    55856 136999 /lib/x86_64-linux-gnu/libpam.so.0.83.1
sshd    935 root  mem    REG    8,1   104936 136897 /lib/x86_64-linux-gnu/libaudit.so.1.0.0
sshd    935 root  mem    REG    8,1    36632 137067 /lib/x86_64-linux-gnu/libwrap.so.0.7.6
sshd    935 root  mem    REG    8,1   149120 136883 /lib/x86_64-linux-gnu/ld-2.19.so
sshd    935 root    0u   CHR    1,3      0t0      6 /dev/null
sshd    935 root    1u   CHR    1,3      0t0      6 /dev/null
sshd    935 root    2u   CHR    1,3      0t0      6 /dev/null
sshd    935 root    3u  IPv4  10479      0t0    TCP *:ssh (LISTEN)
sshd    935 root    4u  IPv6  10481      0t0    TCP *:ssh (LISTEN)
  • ps -ef | grep sshd | grep -v grep : 獲取ps打印出來的列表中的sshd進程所在的那一行(grep -v grep的含義是清除掉包含“grep”字符串的那一行), 即爲:
b@b-VirtualBox:~$ ps -ef | grep sshd | grep -v grep
root       935     1  0 17:37 ?        00:00:00 /usr/sbin/sshd -D
  • awk ‘{print $2}’ : 獲取上述命令打印出來結果的第2列(上述結果的第二列爲sshd的pid, 是935)
  • xargs sudo lsof -p : 列出上述結果pid爲935的進程打開的所有文件描述符, 等價於sudo lsof -p 935的結果

lsof常用用法:lsof -i:

sudo lsof -i:22含義爲列出佔用22的進程

b@b-VirtualBox:~$ sudo lsof -i:22
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    935 root    3u  IPv4  10479      0t0  TCP *:ssh (LISTEN)
sshd    935 root    4u  IPv6  10481      0t0  TCP *:ssh (LISTEN)

df

df命令用於顯示磁盤分區上的可使用的磁盤空間。默認顯示單位爲KB。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。

  • -a或–all:包含全部的文件系統;
  • –block-size=<區塊大小>:以指定的區塊大小來顯示區塊數目;
  • -h或–human-readable:以可讀性較高的方式來顯示信息;
  • -H或–si:與-h參數相同,但在計算時是以1000 Bytes爲換算單位而非1024 Bytes;
  • -i或–inodes:顯示inode的信息;
  • -k或–kilobytes:指定區塊大小爲1024字節;
  • -l或–local:僅顯示本地端的文件系統;
  • -m或–megabytes:指定區塊大小爲1048576字節;
  • –no-sync:在取得磁盤使用信息前,不要執行sync指令,此爲預設值;
  • -P或–portability:使用POSIX的輸出格式;
  • –sync:在取得磁盤使用信息前,先執行sync指令;
  • -t<文件系統類型>或–type=<文件系統類型>:僅顯示指定文件系統類型的磁盤信息;
  • -T或–print-type:顯示文件系統的類型;
  • -x<文件系統類型>或–exclude-type=<文件系統類型>:不要顯示指定文件系統類型的磁盤信息;
  • –help:顯示幫助;
  • –version:顯示版本信息

df常用用法:df -h

b@b-VirtualBox:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            990M  4.0K  990M   1% /dev
tmpfs           201M  968K  200M   1% /run
/dev/sda1       8.8G  4.1G  4.3G  49% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none           1001M   76K 1001M   1% /run/shm
none            100M   36K  100M   1% /run/user
/dev/sr0         57M   57M     0 100% /media/b/VBOXADDITIONS_5.1.22_115126

free

free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩衝區。

free常用用法:free -m或者free -g

b@b-VirtualBox:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1231        768          9         72        456
-/+ buffers/cache:        702       1297
Swap:         1021          0       1021
發佈了33 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章