linux系統命令(調試命令)(nmtui,ip a、ss、ps、uptime、top、lsof、grep,iotop、iftop)


本章命令

0 1 2 3 4 5 6 7 8 9 10
nmtui ip a ss ps uptime top lsof grep iotop iftop tsar

nmtui

  • 圖形化管理網卡命令
  • 依靠於NetworkManager服務
  • NetworkManager服務影響網絡

示例:

1、ip a

作用:查看ip地址(用於centos7系統)
centos6系統用ifconfig
windows運行ipconfig

╭─root@localhost.localdomain ~  
╰─➤  ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7f:e5:12 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.3/24 brd 192.168.80.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe7f:e512/64 scope link 
       valid_lft forever preferred_lft forever

# 拓展:修改網卡信息
修改配置文件 /etc/sysconfig/network-scripts/    目錄下的網卡同名文件

DEVICE=eth0 #指出設備名稱
NM_CONTROLLED=yes #network mamager的參數,實時生效,不需要重啟
ONBOOT=yes #設置為yes,開機自動啟用網絡連接
IPADDR=192.168.21.129 #IP地址
BOOTPROTO=none #設置為none禁止DHCP,設置為static啟用靜態IP地址,設置為dhcp開啟DHCP服務
NETMASK=255.255.255.0 #子網掩碼
DNS1=8.8.8.8 #第一個dns服務器
TYPE=Ethernet #網絡類型為:Ethernet
GATEWAY=192.168.21.2 #設置網關
DNS2=8.8.4.4 #第二個dns服務器
IPV6INIT=no #禁止IPV6
USERCTL=no #是否允許非root用戶控制該設備,設置為no,只能用root用戶更改
HWADDR=00:0C:29:2C:E1:0F #網卡的Mac地址
PREFIX=24
NAME=”System eth0″ #定義設備名稱
#實例:
TYPE=Ethernet 
DEVICE=ens33 
ONBOOT=yes 
BOOTPROTO=static 
IPADDR=192.168.9.129
NETMASK=255.255.255.0 
GATEWAY=192.168.21.2 
DNS1=8.8.8.8 
DNS2=114.114.114.114 

2、ss

作用:查看端口監聽狀態

option:
-t: 顯示tcp鏈接
-n: 以數字形式顯示當前鏈接的端口
-l: 只顯示監聽的
-a:顯示全部
-p: 顯示PID

#常用組合:ss -tnl
╭─root@localhost.localdomain ~  
╰─➤  ss -tnl
State       Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port              
LISTEN      0      128                                      *:22                                                   *:*                  
LISTEN      0      100                              127.0.0.1:25                                                   *:*                  
LISTEN      0      128                                     :::22                                                  :::*                  
LISTEN      0      100                                    ::1:25                                                  :::*       

3、ps

作用:查看進程的工具

option :
a: 顯示跟當前終端關聯的所有進程
u: 基於用戶的格式顯示(U: 顯示某用戶ID所有的進程)
x: 顯示所有進程,不以終端機來區分

╭─root@localhost.localdomain ~  
╰─➤  ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125160  3668 ?        Ss   16:32   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    16:32   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:32   0:00 [ksoftirqd/0]
root          9  0.0  0.0      0     0 ?        R    16:32   0:01 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    16:32   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S<   16:32   0:00 [khelper]
root         13  0.0  0.0      0     0 ?        S    16:32   0:00 [kdevtmpfs]
root         14  0.0  0.0      0     0 ?        S<   16:32   0:00 [netns]
root         20  0.0  0.0      0     0 ?        S<   16:32   0:00 [md]
root         26  0.0  0.0      0     0 ?        S    16:32   0:00 [kswapd0]
root         27  0.0  0.0      0     0 ?        SN   16:32   0:00 [ksmd]
root         28  0.0  0.0      0     0 ?        SN   16:32   0:00 [khugepaged]
root         29  0.0  0.0      0     0 ?        S    16:32   0:00 [fsnotify_mark]
root        539  0.0  0.0      0     0 ?        S    16:32   0:00 [xfsaild/sda1]
root        601  0.0  0.1  55416  1732 ?        S<sl 16:33   0:00 /sbin/auditd -n
root        620  0.1  0.6 302432  6064 ?        Ssl  16:33   0:46 /usr/bin/vmtoolsd

...      #省略了部分進程

postfix    1295  0.0  0.3  89152  3988 ?        S    16:33   0:00 qmgr -l -t unix -u
root       2175  0.0  0.3 140364  3196 tty1     Ss+  16:33   0:00 -zsh
root       2289  0.1  0.0      0     0 ?        R    16:42   0:39 [kworker/0:1]
root       2729  0.0  0.0      0     0 ?        S<   22:38   0:00 [hci0]
root       2730  0.0  0.0      0     0 ?        S<   22:38   0:00 [kworker/u257:1]
root       3112  0.0  0.5 145668  5556 ?        Ss   22:38   0:00 sshd: root@pts/0
postfix    3114  0.0  0.3  89084  3960 ?        S    22:38   0:00 pickup -l -t unix -u
root       3115  0.0  0.3 140372  3332 pts/0    Ss   22:38   0:00 -zsh
root       3225  0.0  0.0      0     0 ?        S<   22:51   0:00 [kworker/0:1H]
root       3255  0.0  0.1 151056  1828 pts/0    R+   23:10   0:00 ps aux

輸出表詳解:

表頭 含義
USER 啟動這些進程的用戶
PID 進程的ID
%CPU 進程占用的CPU百分比
%MEM 占用內存的百分比
VSZ 進程占用的虛擬內存大小(單位:KB)
RSS 進程占用的物理內存大小(單位:KB)
STAT 該程序目前的狀態
START 該 process 被觸發啟動的時間
TIME 該 process 實際使用 CPU 運作的時間
COMMAND 該程序的實際指令

STAT:該程序目前的狀態(詳解)

Linux進程有5種基本狀態:

R :該程序目前正在運作,或者是可被運作;
S :該程序目前正在睡眠當中,但可被某些訊號(signal) 喚醒。
T :該程序目前正在偵測或者是停止了;
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (僵屍) 程序的狀態
D :不可中斷狀態.

5個基本狀態后,還可以加一些字母,它們含意:

<: 表示進程運行在高優先級上
N: 表示進程運行在低優先級上
L: 表示進程有頁面鎖定在內存中
s: 表示進程是控制進程
l: 表示進程是多線程的
+: 表示當前進程運行在前台

實例 ps -ef

$ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Sep18 ?        00:01:19 init [3]
root         78      1  0 Sep18 ?        00:00:02 /usr/sbin/sshd
root         93      1  0 Sep18 ?        00:00:56 crond -m/dev/null
root        104      1  0 Sep18 ?        00:00:01 /usr/sbin/atd
root        120      1  0 Sep18 ?        00:00:00 /bin/sh /usr/local/bin/svscanboot
root        122    120  0 Sep18 ?        00:01:13 svscan /service
root        123    120  0 Sep18 ?        00:00:00 readproctitle service errors: ..........................................
root        124    122  0 Sep18 ?        00:00:00 supervise tops-gemclient
root        125    122  0 Sep18 ?        00:00:00 supervise log
root        126    124  0 Sep18 ?        00:00:00 /usr/bin/perl -w ./run
nobody      127    125  0 Sep18 ?        00:00:00 multilog t I s200000 n5 ./main
root       1910      1  3 Sep18 ?        1-17:18:02 ./service_manager -TjApiHttpTimeout=30s
  • UID: 用戶ID(User ID)
  • PID: 進程ID(Process ID)
  • PPID: 父進程的進程ID(Parent Process id)
  • STIME: 啟動時間
  • TTY: 與進程關聯的終端(tty)
  • TIME: 進程使用的總cpu時間
  • CMD: 正在執行的命令行命令

實例

# 查看進程的啟動時間:
ps -eo lstart   啟動時間
# 查看進程的運行時間
ps -eo etime   運行多長時間.
# 查看進程的pid、啟動時間、運行時間
ps -eo pid,lstart,etime | grep [ pid ]

4、uptime

作用:查看系統負載

╭─root@localhost.localdomain ~  
╰─➤  uptime 
 23:34:30 up  7:01,  2 users,  load average: 0.00, 0.01, 0.05

#輸出含意如下:

23:34:30  up      7:01,     2 users, load average:    0.00     ,0.01  ,     0.05
當前時間 系統狀態  系統運行時間 當前登錄用戶         系統負載1分鍾 ,5分鍾 ,15分鍾的平均負載


那么什么是系統平均負載呢? 系統平均負載是指在特定時間間隔內運行隊列中的平均進程數。
如果每個CPU內核的當前活動進程數不大於3的話,那么系統的性能是良好的。如果每個CPU內核的任務數大於5,那么這台機器的性能有嚴重問題。
如果你的linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使用了。

5、top

作用:實時顯示進程的狀態

輸出內容:

第1行:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鍾、5分鍾、15分鍾內的平均值,數值越小意味着負載越低)。
第2行:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數。
第3行:用戶占用資源百分比、系統內核占用資源百分比、改變過優先級的進程資源百分比、空閑的資源百分比等;其中數據均為CPU數據並以百分比格式顯示。
第4行:物理內存總量、內存使用量、內存空閑量、作為內核緩存的內存量。
第5行:虛擬內存總量、虛擬內存使用量、虛擬內存空閑量、已被提前加載的內存量。
第6行:表格

第6行表格含義:

表頭 含義
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 進程名稱(命令名/命令行)

top 運行中的內部命令:

s – 改變畫面更新頻率
l – 關閉或開啟第一部分第一行 top 信息的表示
t – 關閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的順序排列表示進程列表
P – 以 CPU 占用率大小的順序排列進程列表
M – 以內存占用率大小的順序排列進程列表
h – 顯示幫助
n – 設置在進程列表所顯示進程的數量
q – 退出 top
s – 改變畫面更新周期

# 查看進程狀態
cat /proc/17944/status ; echo -e "\n"; cat /proc/17944/stack

6、lsof

作用:用於查看你進程打開的文件,打開文件的進程,進程打開的端口(TCP、UDP)

-i<條件>:列出符合條件的進程。(4、6、協議、:端口、 @ip )

╭─root@localhost.localdomain ~  
╰─➤  lsof
zsh: command not found: lsof
╭─root@localhost.localdomain ~  
╰─➤  yum install lsof -y      
╭─root@localhost.localdomain ~  
╰─➤  lsof -i:22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     984 root    3u  IPv4  18375      0t0  TCP *:ssh (LISTEN)
sshd     984 root    4u  IPv6  18384      0t0  TCP *:ssh (LISTEN)

7、grep

作用:Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來;

╭─root@www.du1.com ~  
╰─➤  lsof -i:80 | grep httpd
httpd   2348   root    4u  IPv6  21624      0t0  TCP *:http (LISTEN)
httpd   2350 daemon    4u  IPv6  21624      0t0  TCP *:http (LISTEN)
httpd   2351 daemon    4u  IPv6  21624      0t0  TCP *:http (LISTEN)
httpd   2352 daemon    4u  IPv6  21624      0t0  TCP *:http (LISTEN)

8、iotop

作用:iotop 是一個用來監視磁盤 I/O 使用狀況的 top 類工具。iotop 具有與 top 相似的 UI,其中包括 PID、用戶、I/O、進程等相關信息。

下載

 yum install iotop -y

使用

╭─root@localhost.localdomain ~  
╰─➤  iotop  

##其中:

   r  :反向排序
  o  :只顯示有IO輸出的進程
  q :是退出

9、iftop

官網:http://www.ex-parrot.com/~pdw/iftop/

安裝

yum install epel-release
yum install iftop -y

常用的參數

-i   設定監測的網卡,如:# iftop -i eth1
-B    以bytes為單位顯示流量(默認是bits),如:# iftop -B
-n   使host信息默認直接都顯示IP,如:# iftop -n
-N   使端口信息默認直接都顯示端口號,如: # iftop -N
-F   顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24
-h(display this message),幫助,顯示參數信息
-p   使用這個參數后,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;
-b    使流量圖形條默認就顯示;
-f     過濾計算包用的;
-P    使host信息及端口信息默認就都顯示;
-m    設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M

進入iftop畫面后的一些操作命令(注意大小寫)

按h切換是否顯示幫助;
按n切換顯示本機的IP或主機名;
按s切換是否顯示本機的host信息;
按d切換是否顯示遠端目標主機的host信息;
按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量;
按N切換顯示端口號或端口服務名稱;
按S切換是否顯示本機的端口信息;
按D切換是否顯示遠端目標主機的端口信息;
按p切換是否顯示端口信息;
按P切換暫停/繼續顯示;
按b切換是否顯示平均流量圖形條;
按B切換計算2秒或10秒或40秒內的平均流量;
按T切換是否顯示每個連接的總流量;
按l打開屏幕過濾功能,輸入要過濾的字符,比如ip,按回車后,屏幕就只顯示這個IP相關的流量信息;
按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;
按j或按k可以向上或向下滾動屏幕顯示的連接記錄;
按1或2或3可以根據右側顯示的三列流量數據進行排序;
按<根據左邊的本機名或IP排序;
按>根據遠端目標主機的主機名或IP排序;
按o切換是否固定只顯示當前的連接;
按f可以編輯過濾代碼,這是翻譯過來的說法,我還沒用過這個!
按!可以使用shell命令,這個沒用過!沒搞明白啥命令在這好用呢!
按q退出監控。

摘自:https://www.vpser.net/manage/iftop.html


10、監控命令tsar

  • tsar是淘寶自己開發的一個采集工具(類似於sar工具),主要用來收集服務器的系統信息(如cpu,io,mem,tcp等),以及應用數據(如squid haproxy nginx等)。
  • 收集到的數據存儲在磁盤上,可以隨時查詢歷史信息,輸出方式靈活多樣,另外支持將數據存儲到mysql中,也可以將數據發送到nagios報警服務器。
  • tsar在展示數據時,可以指定模塊,並且可以對多條信息的數據進行merge輸出,帶--live參數可以輸出秒級的實時信息。
  • tsar可以通過編寫模塊輕松擴展,這使得它成為一個功能強大且多功能的報告工具。
  • 官方網址:http://tsar.taobao.org
  • github地址:https://github.com/alibaba/tsar
  • 參考:https://www.cnblogs.com/clsn/p/9135820.html

常用命令

tsar -il 1  #查看負載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM