Linux第六周學習博客作業

對第六周學習的內容進行總結

簡述osi七層模型和TCP/IP五層模型

OSI(Open System Interconnect),時國際標準化組織ISO指定的網絡互聯模型規范,它是最標準和最科學的網絡互聯模型。
TCP/IP五層模型是互聯網發展初始已經存在并自然發展多年的一套通用網絡互聯模型,它是目前使用和支持最廣泛的模型,相對于OSI標準,它的支持和應用更普遍。

OSI七層模型

OSI標準定義了起個層次的網絡架構,從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。 數據從高級到低級層,是一個將數據加上各種協議打包并組織成特定大小的流式數據包的過程,當傳輸完成,又是一個從低到高層的拆包還原成源數據的過程。

  1. 物理層
    實現數字信號最終實際傳輸的層,對應了很多實際的物理介質和設備,如網線、同軸電纜、光纖、集線器等。
  2. 數據鏈路層
    數字比特信號以在此層幀的形式,使用鏈路地址(如以太網的MAC地址)來訪問介質,并進行差錯校驗。工作在這一層的常見設備有:網橋、交換機等。
  3. 網絡層
    這一層用到的基本協議就是IP,IP是整個網絡層的基礎。本層通過IP尋址來實現兩個節點的連接,源端傳輸層送來的數據包通過本層的IP協議,選擇合適的路由和交換節點,正確無誤的送給目的端的傳輸層。工作在這一層的常見設備有:路由器、三層交換機。
  4. 傳輸層
    TCP、UDP協議就工作在這一層。它為上層提供了端到端(如A主機的某端口到B主機的某端口)的可靠和透明的數據傳輸服務,包括處理差錯控制和一些設定操作控制等。它對于高層而言向下屏蔽了低層的通信細節,使得高層用戶看到的是兩個傳輸實體之間的一條可控制并且可靠的數據通路。
  5. 會話層
    是用戶應用程序與網絡之間的接口,為2個表示層實體提供建立和使用連接的方法。它將不同實體的表示層連接成會話,組織和協調兩個會話之前的通信,對這一層次的數據交換進行管理。
  6. 表示層
    對來自應用層的數據進行解釋,為其賦予相應的含義與特定的格式后傳給會話層。例如對數據進行編碼、格式轉換 、壓縮解壓縮、加密解密等。
  7. 應用層
    是最接近用戶的一層,直接面對用戶提供服務,組織和實現用戶希望在網絡上完成的工作任務。應用層的網絡服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。

    Linux第六周學習博客作業
    OSI_Detail.png

TCP/IP五層模型

TCP/IP五層模型相對于OSI七層模型進行了簡化表示,主要是OSI高級的應用層、表示層、會話層在TCP/IP模型中統一為應用層。
它們的對應關系如下圖所示:

 

Linux第六周學習博客作業
OSI_TCP.png

每一層對應的常見設備:

 

Linux第六周學習博客作業
OSI_TCP_Device.png

每一層對應的常用協議:

 

Linux第六周學習博客作業
OSI_TCP_Protocal.png

簡述iproute家族命令

在CentOS系統中,iproute的版本號與內核是一致的,因為很多iproute的設置是直接放置到內核當中的。

  1. ip命令
    命令格式 ip [OPTION] OBJECT {COMMAND | help}
    常用OBJECT有: link, addr, route, netns
    注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫,接上OBJECT之后可以在后面再接上具體的OBJECT 支持的選項
    help的使用: 例如# ip link help可以顯示簡要的幫助信息
  • ip link
    功能:網絡接口的配置
    • ip link show:顯示網絡接口的信息
      可以使用dev IFACE來指定接口
例如僅顯示指定網卡的信息
~]$ ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
僅顯示UP狀態的網卡信息
~]$ ip link show up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

    • ip link set dev IFACE COMMAND : 對網絡接口進行設置,dev可以省略
例如禁用某個網卡
~]# ip link set lo down
~]# ip link show lo
1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

重新啟用
~]# ip link show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

multicast on或multicast off:啟用或禁用多播功能
~]# ip link set ens33 multicast off
~]# ip link show ens33
2: ens33: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000

name NAME:為網絡接口重命名
~]# ip link set ens33 name ens34

mtu NUMBER:設置MTU的大小,默認為1500
~]# ip link set ens33 mtu 1000
~]# ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1000 qdisc pfifo_fast state UP mode DEFAULT qlen 1000

    • ip netns : 管理網絡用戶空間
實例:
ip  netns add  NAME:創建指定的netns
~]# ip netns add abc

ip  netns list:列出所有的netns
~]# ip netns list
abc

ip  netns  exec  NAME  COMMAND:在指定的netns中運行命令
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
~]# ip link set ens33 netns abc  #將ens36移至abc網絡空間
~]# ip link show      #此時會發現無法顯示出ens36的信息了
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
~]# ip netns exec abc ip link show   #在abc網絡空間里運行ip link show命令
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: ens36: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

ip  netns del  NAME:刪除指定的netns
~]# ip netns del abc
~]# ip link show   #刪除網絡空間abc后,其內的ens36又回來了
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

    • ip address COMMAND : 管理ip網絡接口地址,address可簡寫addr
ip addr add : 添加新的地址
~]# ip addr add 192.168.1.128/24 dev ens36

ip addr show : 顯示接口的地址
~]# ip addr show dev ens36
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.128/24 brd 192.168.244.255 scope global dynamic ens36
       valid_lft 1189sec preferred_lft 1189sec
    inet 192.168.1.128/24 scope global ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::7116:d660:c900:460f/64 scope link 
       valid_lft forever preferred_lft forever

ip addr delete : 刪除指定接口的指定ip地址
~]# ip addr del 192.168.1.128/24 dev ens36
~]# ip addr show dev ens36
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.244.128/24 brd 192.168.244.255 scope global dynamic ens36
       valid_lft 1057sec preferred_lft 1057sec
    inet6 fe80::7116:d660:c900:460f/64 scope link 
       valid_lft forever preferred_lft forever

ip addr flush : 清空指定接口所有的ip地址
~]# ip addr flush dev ens36
~]# ip addr show dev ens36
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

    • ip route COMMAND : 實現路由表管理
實例:
ip route show : 顯示路由,可以指定via、src等
~]# ip route show
default via 192.168.31.1 dev ens33 proto static metric 100 
default via 192.168.244.2 dev ens36 proto static metric 101 
192.168.1.0/24 dev ens36 proto kernel scope link src 192.168.1.128 
192.168.31.0/24 dev ens33 proto kernel scope link src 192.168.31.113 metric 100 
192.168.244.0/24 dev ens36 proto kernel scope link src 192.168.244.128 metric 100

ip  route  add  TYPE PREFIX  via GW [dev  IFACE]  [src SOURCE_IP] : 添加一個路由,src是你網卡的ip,只有你網卡的ip被設置多個時才有必要指定src。
~]# ip route add 172.16.0.0/16 via 192.168.1.1 dev ens36 src 192.168.1.128
~]# ip route show dev ens36
default via 192.168.244.2 proto static metric 101 
172.16.0.0/16 via 192.168.1.1 src 192.168.1.128 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 metric 100 
192.168.1.128 proto kernel scope link src 192.168.1.128 metric 100 
192.168.244.0/24 proto kernel scope link src 192.168.244.128 metric 100
添加默認路由
~]# ip route add default via 192.168.1.1 dev ens36 src 192.168.1.128
~]# ip route show dev ens36
default via 192.168.1.1 src 192.168.1.128 
default via 192.168.244.2 proto static metric 101 
172.16.0.0/16 via 192.168.1.1 src 192.168.1.128 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 metric 100 
192.168.1.128 proto kernel scope link src 192.168.1.128 metric 100 
192.168.244.0/24 proto kernel scope link src 192.168.244.128 metric 100

ip  route del  TYPE PRIFIX : 刪除路由
~]# ip route del 172.16.0.0/16 dev ens36
~]# ip route del default via 192.168.1.1
~]# ip route show dev ens36
default via 192.168.244.2 proto static metric 100 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 
192.168.1.0/24 proto kernel scope link src 192.168.1.128 metric 100 
192.168.244.0/24 proto kernel scope link src 192.168.244.128 metric 100

ip  route get  TYPE PRIFIX : 查看單條路由
~]# ip route get 192.168.1.0/24
broadcast 192.168.1.0 dev ens36 src 192.168.1.128

ip route flush : 清空某類路由
~]# ip route flush dev ens36
~]# ip route show dev ens36
~]# 

  1. ss命令
    用來顯示socket的工具
    ss [options] [ FILTER ]
選項:
-t:TCP協議的相關連接
-u:UDP相關的連接
-w:raw socket相關的連接
-l:監聽狀態的連接
-a:所有狀態的連接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息

顯示所有TCP相關連接的狀態,端口以數字形式顯示
~]# ss -tan
State       Recv-Q Send-Q                                                Local Address:Port                                                               Peer Address:Port              
LISTEN      0      128                                                               *:22                                                                            *:*                  
ESTAB       0      244                                                  192.168.31.113:22                                                               192.168.31.106:1945               
LISTEN      0      128                                                              :::22                                                                           :::*    

顯示UDP相關連接及相關進程的PID、內存情況,端口以數字形式顯示
~]# ss -unpm
Recv-Q Send-Q                                                     Local Address:Port                                                                    Peer Address:Port              
0      0                                                         192.168.31.113:48591                                                                163.172.177.158:123                 users:(("chronyd",pid=834,fd=6))
     skmem:(r0,rb212992,t0,tb212992,f0,w0,o0,bl0)
0      0                                                         192.168.31.113:41933                                                                   51.15.41.135:123                 users:(("chronyd",pid=834,fd=7))
     skmem:(r0,rb212992,t0,tb212992,f0,w0,o0,bl0)
0      0                                                         192.168.31.113:59668                                                                221.229.173.182:123                 users:(("chronyd",pid=834,fd=4))
     skmem:(r0,rb212992,t0,tb212992,f0,w0,o0,bl0)

  1. nmcli
    一種新興的網絡管理命令
    格式nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device COMMAND = {status | show | connect | disconnect | delete | wifi | wimax }
查看和管理網絡接口
~]# nmcli dev show
GENERAL.DEVICE:                         ens36
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         xx:xx:xx:xx:xx:xx
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Wired connection 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.244.128/24
IP4.ADDRESS[2]:                         192.168.1.128/24
IP4.GATEWAY:                            192.168.244.2
IP4.DNS[1]:                             192.168.244.2
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fe80::7116:d660:c900:460f/64
IP6.GATEWAY:                            --
~]# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION         
ens33   ethernet  connected  ens33              
ens36   ethernet  connected  Wired connection 1 
lo      loopback  unmanaged  --     
~]# nmcli dev disconnect ens36
Device 'ens36' successfully disconnected.
~]# nmcli dev status
DEVICE  TYPE      STATE         CONNECTION 
ens33   ethernet  connected     ens33      
ens36   ethernet  disconnected  --         
lo      loopback  unmanaged     --

connection COMMAND = { show| up | down | add | edit | modify | delete | reload | load }
開啟、禁止、管理網絡連接
~]# nmcli conn show
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  4f39ffe0-01f0-3a93-970c-d935f7e91f37  802-3-ethernet  ens36  
ens33               dd6bd51b-3c2b-4a39-a7ff-324b5f7f007b  802-3-ethernet  ens33
~]# nmcli conn down ens36
~]# nmcli conn up ens36
使用modify添加ip地址,添加地址后,使用up刷新一次才能生效
~]# nmcli modify ens36 +ipv4.addr 192.168.2.102/24
~]# nmcli conn up ens36

  1. nmtui
    圖形界面設置和管理網絡
使用命令啟動界面
~]# nmtui

Linux第六周學習博客作業
nmtui.png

詳細說明進行管理工具htop、vmstat等相關命令,并舉例

htop

  1. 簡介
    相當于監控軟件TOP的增強版,htop有如下優勢:
  • 相對于top更簡單的操作
  • 支持圖形界面和橫向縱向的滾動操作以及鼠標操作
  • 殺進程時可以不用輸入進程號
  1. 使用介紹
    在命令行輸入htop回車即可進入htop界面

    Linux第六周學習博客作業
    htop1.png

下面分區域截圖說明界面使用方法

 

Linux第六周學習博客作業
htop2.png

左側分別有cpu、內存、交換分區的使用情況,右邊分別有Tasks進程總數、thr線程總數、當前運行的進程數、Load average(系統1分鐘,5分鐘,10分鐘的平均負載情況)、Uptime系統運行的時間

Linux第六周學習博客作業
htop3.png
  • PID:進程號
  • USER:運行此進程的用戶
  • PRI:進程的優先級
  • NI:進程的NICE值,默認的為0,范圍從-20到+19,正值表示低優先級,負值表示高優先級,可以進行調整
  • VIRT:進程占用的虛擬內存值
  • RES:進程占用的物理內存值
  • SHR:進程占用的共享內存值
  • S:進程的運行狀況,R表示正在運行、S表示休眠,等待喚醒、Z表示僵死狀態
  • %CPU:該進程占用的CPU使用率
  • %MEM:該進程占用的物理內存相對于總內存的百分比
  • TIME+:該進程啟動后占用的總的CPU時間
  • COMMAND:進程啟動的啟動命令名稱
Linux第六周學習博客作業
htop4.png
快捷鍵 功能說明
h, ? , F1 查看htop使用說明
S, F2 htop 設定
/, F3 搜索進程
, F4 增量進程過濾器
t, F5 顯示樹形結構
<, >, F6 選擇排序方式
[, F7 可減少nice值以提高對應進程的優先級
], F8 可增加nice值以降低對應進程的優先級
k, F9 可對進程傳遞信號
q, F10 結束htop
u 只顯示一個給定的用戶的過程
U 取消標記所有的進程
H 顯示或隱藏用戶線程
K 顯示或隱藏內核線程
F 跟蹤進程
P 按CPU 使用排序
M 按內存使用排序
T 按Time+ 使用排序
l 顯示進程打開的文件
I 倒轉排序順序
s 選擇某進程,按s:用strace追蹤進程的系統調用

F1顯示幫助信息:

 

Linux第六周學習博客作業
htop5.png

鼠標點擊Setup或者按下F2之后進入htop的設定頁面
關于F2設定頁面的說明:

  • Meters
    設定頂端的 顯示信息,分為左右兩側,Left column 表示左側的顯示的信息,Right column表示右側顯示的信息,如果要新加選項,可以選擇Available meters添加,F5新增到上方左側,F6新增到上方右側。Left column和Right column下面的選項,可以選定信息的顯示方式,有LED、Bar(進度條)、Text(文本模式),可以根據個人喜好進行設置

    Linux第六周學習博客作業
    htop6.png
  • Display options
    Linux第六周學習博客作業
    htop7.png
選擇要顯示的內容,按空格 x表示顯示,選擇完后,按F10保存
  • Colors
    Linux第六周學習博客作業
    htop8.png
設定界面以什么顏色來顯示
  • Colums
    Linux第六周學習博客作業
    htop9.png
作用是增加或取消要顯示的各項內容,選擇后F7(向上移動)、F8(向下移動)、F9(取消顯示)、F10(保存更改)例如增加PPID(父進程號)、PGRP(進程組號),根據各人需求,顯示信息

在界面下按F3或直接輸入”/”就可以直接進入搜索模式,按照進程名進行搜索

 

Linux第六周學習博客作業
htop10.png

搜索到的進程會用設定的顏色標記出來,方便查看

F4:過濾器
相當于模糊查找,不區分大小寫,下方輸入要搜索的內容后,則界面只顯示搜索到的內容,更加方便查看

 

Linux第六周學習博客作業
htop11.png

F5:以樹形方式顯示進程

 

Linux第六周學習博客作業
htop12.png

F6:排序方式
按下F6后會跳轉至上圖界面,讓您選擇以什么方式進行排序,在Sort by下選擇您要以什么來排序

 

Linux第六周學習博客作業
htop13.png

F7,F8:調整進程nice值
F7表示減小nice值(增大優先級),F8增大nice值(減小優先級),選擇某一進程,按F7或F8來增大或減小nice值,nice值范圍為-20到19

 

Linux第六周學習博客作業
htop14.png

F9:殺死進程
選擇某一進程按F9即可殺死此進程

F10:退出htop

vmstat命令

最常見的Linux監控工具之一,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。相比top,可以看到整個機器的CPU,內存,IO的使用情況,而不是單單看到各個進程的CPU使用率和內存使用率
一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數

例如
~]$ vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 15813676   2124 195180    0    0   574    26  421  289  1  5 86  7  0
上述應用實例中2表示每個兩秒采集一次主機的狀態,1表示只采集一次

~]$ vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 15808692   2124 195388    0    0    17     1   41   31  0  0 100  0  0
 0  0      0 15808552   2124 195388    0    0     0     3  152   87  0  0 100  0  0
 0  0      0 15808552   2124 195388    0    0     0     0  148  107  0  0 100  0  0
 1  0      0 15808552   2124 195388    0    0     0     0  100   94  0  0 100  0  0
 0  0      0 15808552   2124 195388    0    0     0     0   89   82  0  0 100  0  0
^C
每2秒采集一次狀態,采集次數沒有指定,采集會一直持續下去,直到主動去停止它

vmstat命令的顯示結果中,各項參數的說明如下:

  • r 表示運行中的隊列(就是說多少個進程真的分配到CPU),當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關系,一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,此時主機的狀態就需要警惕了。top的負載類似每秒的運行隊列。如果運行隊列過大,表示CPU很繁忙,一般會造成CPU使用率很高。
  • b 表示阻塞的進程。
  • swpd 虛擬內存已使用的大小,如果大于0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么很可能該升級內存或者進行優化了。
  • free 空閑的物理內存的大小。
  • buff 緩沖頁面間的大小,Linux系統為了提高內存和硬盤(或其他I/O設備)之間的數據交換的速度而設計的。buffers是用來元數據,例如inode、權限等等。
  • cache cache直接用來記憶我們打開的文件,給文件做緩沖,buffers與cache共同作用構成了系統的緩存機制,提高了程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。
  • si 每秒從磁盤進入虛擬內存的大小,如果這個值大于0,表示物理內存不夠用或者內存泄露了,要查找耗內存的進程解決掉。
  • so 每秒虛擬內存進入磁盤的大小,如果這個值大于0,同樣表示經常有虛擬內存數據交換。
  • bi 塊設備每秒接收的塊數量,這里的塊設備是指系統上所有的磁盤和其他塊設備,當有磁盤I/O操作時會有數字表示。
  • bo 塊設備每秒發送的塊數量。
  • in 每秒CPU的中斷次數,包括時間中斷
  • cs 每秒上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,一般做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU干正經事的時間少了,CPU沒有充分利用。
  • us 用戶CPU時間,一般此時間比例適當大一些表示主機在較多的執行用戶進程,是比較理想的狀態。
  • sy 系統CPU時間,如果太高,表示系統調用時間長。
  • id 空閑CPU時間,一般來說,id + us + sy = 100,一般可以認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
  • wt 等待I/O的CPU時間。這個指標通常意味著CPU在等待磁盤讀寫操作的時間,用百分比表示。wait越大則機器io性能就越差。說明IO等待比較嚴重,這可能由于磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸。

ps命令

使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多 的資源等等。 ps為我們提供了進程的瞬時狀態,它所提供的查看結果并不動態連續的;如果想對進程實時監控,應該用 top 工具。

使用格式:ps [options] [–help]

慣常用法:

  • ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
  • ps -A 顯示所有進程。
  • ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
  • ps -e 此參數的效果和指定”A”參數相同。
  • ps e 列出程序時,顯示每個程序所使用的環境變量。
  • ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關系。
  • ps -H 顯示樹狀結構,表示程序間的相互關系。
  • ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
  • ps s 采用程序信號的格式顯示程序狀況。
  • ps S 列出程序時,包括已中斷的子程序資料。
  • ps -t<終端機編號>  指定終端機編號,并列出屬于該終端機的程序的狀況。
  • ps u 以用戶為主的格式來顯示程序狀況。
  • ps x 顯示所有程序,不以終端機來區分。
最常用的方法是ps -aux,然后再利用一個
管道符號導向到grep去查找特定的進程,
然后再對特定的進程進行操作。
~]$ ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0 193700  6820 ?        Ss   14:34   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    14:34   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    14:34   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   14:34   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    14:34   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    14:34   0:00 [rcu_bh]
~]$ ps -aux | grep "bash"
sky        1575  0.0  0.0 115524  2136 pts/0    Ss   14:35   0:00 -bash
sky        1704  0.0  0.0 112660   968 pts/0    S+   15:26   0:00 grep --color=auto bash

ps命令顯示結果中各項HEAD的含義:

  • USER 用戶名
  • UID 用戶ID(User ID)
  • PID 進程ID(Process ID)
  • PPID 父進程的進程ID(Parent Process id)
  • SID 會話ID(Session id)
  • %CPU 進程的cpu占用率
  • %MEM 進程的內存占用率
  • VSZ 進程所使用的虛存的大?。╒irtual Size)
  • RSS 進程使用的駐留集大小或者是實際內存的大小,Kbytes字節。
  • TTY 與進程關聯的終端(tty)
  • STAT 進程的狀態:進程狀態使用字符表示的(STAT的狀態碼)
  • R 運行 Runnable (on run queue) 正在運行或在運行隊列中等待。
  • S 睡眠 Sleeping 可中斷睡眠, 在等待某個條件的形成或接收信號。
  • I 空閑 Idle
  • Z 僵死 Zombie(a defunct process) 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放。
  • D 不可中斷睡眠 Uninterruptible sleep (ususally IO) 不能被信號喚醒, 進程必須等待直到有某種特定條件滿足(例如I/O完成)。
  • T 終止 Terminate 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行。
  • P 等待交換頁
  • W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。
  • X 死掉的進程
  • < 高優先序的進程
  • N 低優先序的進程
  • L Lock, 有記憶體分頁分配并鎖在記憶體內
  • s session leader,會話領導者(在它之下有子進程);比如shell下運行好多進程,這個shell就是領導者,若這個shell被關閉,其下的所有進程全部會關閉
  • l 多進程的進程(使用 CLONE_THREAD, 類似 NPTL pthreads)
    • 位于前臺的進程
  • START 進程啟動時間和日期
  • TIME 進程累計占用的cpu時間
  • COMMAND 由哪個命令啟動的此進程,帶中括號的是內核線程
  • NI Nice值
  • PRI 進程優先級編號(Priority)。0-139:實時優先級,優先級與靜態相反。 100-139:靜態優先級,數字越小,優先級越高,必要時可讓出優先級
  • WCHAN 進程正在睡眠的內核函數名稱;該函數的名稱是從/root/system.map文件中獲得的。
  • FLAGS 與進程相關的數字標識

kill命令

發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果任無法終止該程序可用“-KILL” 參數,其發送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶可以影響其他用戶的進程,非root用戶只能影響自己的進程。
使用格式kill [ -s signal | -p ] [ -a ] pid

  1. 命令參數:
  • -l 后加信號編號可以列出相應信號信息,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
  • -a 當處理當前進程時,不限制命令名和進程號的對應關系
  • -p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
  • -s 指定發送信號
  • -u 指定用戶
  1. 實例
~]$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP    1    終端斷線
INT    2    中斷(同 Ctrl + C)
QUIT   3    退出(同 Ctrl + \)
TERM   15   終止
KILL   9    強制終止
CONT   18   繼續(與STOP相反, fg/bg命令)
STOP   19   暫停(同 Ctrl + Z)

~]$ kill -l 1
HUP
~]$ kill -l KILL
9

先用ps查找進程,然后用kill殺掉
~]$ ps aux | grep "vim"
sky        1871  0.1  0.0 151600  5340 pts/0    T    16:12   0:00 vim issue1
sky        1874  0.0  0.0 112660   972 pts/0    S+   16:13   0:00 grep --color=auto vim
~]$ kill -9 1871
~]$ ps aux | grep "vim"
sky        1880  0.0  0.0 112660   972 pts/0    S+   16:15   0:00 grep --color=auto vim
[1]+  Killed                  vim issue1

殺死指定用戶所有進程
~]# killall -u centos
使用killall命令

使用until和while分別實現192.168.0.0/24網段內,地址是否能夠ping通,ping通則輸出”success!”,若ping不通則輸出”fail!”

while循環實現
#!/bin/bash
#
i=1
while [ $i -le 254 ];do
    ping -c 1 -w 1 192.168.0.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "192.168.0.$i is success!"
    else
        echo "192.168.0.$i is fail!"
    fi  
    let "i+=1"
done

until循環實現
#!/bin/bash
#
i=1
until [ $i -ge 255 ];do
    ping -c 1 -w 1 192.168.0.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "192.168.0.$i is success!"
    else
        echo "192.168.0.$i is fail!"
    fi  
    let "i+=1"
done

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91117

(0)
skysky
上一篇 2018-01-14 16:50
下一篇 2018-01-15 08:58

相關推薦

  • N26第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;grep “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;grep “^#[[:space:…

    Linux干貨 2017-03-06
  • 第六周作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; %s@^[[:space:]]\+@#&@g 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的…

    Linux干貨 2017-03-03
  • RHEL6.9換源記

    RHEL是提供給企業使用的,雖然我們在網絡上也能下載到它的鏡像,但是我們無法使用它的服務。最近由于系統比較卡,重裝了一次系統,裝完之后,我用VMware Workstation Pro 12 加載了之前的RHEL 6.9-000002.vmdk文件之后居然發現不能掛載CD/DVD,這就不能愉快的玩了。在VMware的設置里折騰好久也沒能搞定,光盤安裝RPM包…

    2017-07-20
  • ?linux文件類型及顏色標識整理

          linux文件類型及顏色標識整理                      &…

    Linux干貨 2016-10-17
  • N25-第七周

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;     [root@localhost ~]# fdisk -l Disk /dev/sda: 42.9 GB, 42949672960 bytes 255…

    Linux干貨 2017-05-21
欧美性久久久久