本章命令
| 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 #查看負載

