- 簡述osi七層模型和TCP/IP五層模型
- 簡述iproute家族命令
- 詳細說明進行管理工具htop、vmstat等相關命令,并舉例
- 使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,若ping通則輸出”success!”,若ping不通則輸出”fail!”
1、簡述osi七層模型和TCP/IP五層模型
OSI七層:
- 物理層:把數據轉換為傳輸介質上的電子流或模擬脈沖,并監視數據的傳輸
- 數據鏈路層:提供與網絡適配器相連的接口,維護子網的邏輯鏈接
- 網絡層:支持邏輯尋址與路由選擇
- 傳輸層:為網絡提供錯誤控制和數據流控制
- 會話層:在計算機的通信應用程序之間建立會話
- 表示層:吧數據轉換為標準格式,管理數據加密與壓縮
- 應用層:為應用程序提供網絡接口,支持文件傳輸,通信等功能的網絡應用
tcp/ip四層模型:
- 網絡訪問層:提供了與物理網絡連接的接口,針對傳輸介質設置數據的格式,根據硬件的地址實現數據的尋址,對數據在物理網絡中的傳遞提供錯誤控制
- 網絡層:提供獨立于硬件的邏輯尋址,從而讓數據能夠在具有不同物理結構的子網之間傳遞,提供路由功能來降低流量,支持不同網絡中的數據傳遞
- 傳輸層:為網絡層提供了流量控制,錯誤控制和確認服務,充當網絡應用程序的接口
- 應用層:為網絡排錯,文件傳輸,遠程控制和internet操作提供了應用程序,還支持應用編程接口(API),從而使得針對特定操作系統編寫的程序能夠訪問網絡
tcp/ip模型不是一個很嚴格的分界的模型,所以有說5層也有說四層,tcp/ip模型的實現也沒有嚴格遵守上圖的模型。
2、簡述iproute家族命令 iproute家族有很多命令其中比較常用的有ss,ip
ip命令:
簡介:查看/操作路由,設備,策略路由和隧道,在ip命令中有很多子命令,功能非常強大
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
配置網絡設備:
ip link:網絡設備配置
ip link set - 需要改變的設備的屬性
dev NAME (default):指明要管理的設備,dev關鍵字可省略;
up和down:
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認為1500;
netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間;
ip link show - display device attributes
ip link help - 顯示簡要使用幫助;
舉例:
啟用/關閉網絡設備
查看網絡設備信息
ip link show 或者 ip link list
管理網絡命名空間:
ip netns: -管理網絡命名空間
ip netns list:列出所有的netns
ip netns add NAME:創建指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
舉例:
1.添加一個netns名為Hal_netns
ip netns add Hal_netns
2.查看所有netns
3.將ens37這個接口移動到Hal_netns這個網絡命名空間中
4.刪除網絡命名空間Hal_netns
ip net del Hal_netns
IP地址管理
ip address - IP地址管理
ip address add - 添加新的ip地址
ip addr add IFADDR dev IFACE
[label NAME]:為額外添加的地址指明接口別名;
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;
[scope SCOPE_VALUE]:
global:全局可用;
link:接口可用;
host:僅本機可用;
ip address delete - 刪除ip地址
ip addr delete IFADDR dev IFACE
ip address show - 查看ip地址
ip addr list [IFACE]:顯示接口的地址;
ip address flush - 清空ip地址
ip addr flush dev IFACE
舉例:
1.為ens37新增一個別名ens37:0 ip為10.0.1.25/8
ip ad add 10.0.1.25/8 dev ens37 label ens37:0
2.查看接口ip地址
ip ad li 或者 id ad show
3.down掉ens37接口的10.0.1.25/8這個ip地址
ip addr delete 10.0.1.25/8 dev ens37
管理路由表
ip route -管理路由表
ip route add - 增加一個新的路由條目
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ip route change - 更改路由條目
ip route replace - 更改或新增路由條目
ip route delete - 刪除路由條目
ip route del TYPE PRIFIX
ip route show -查看路由表
ip route flush - 清空路由表
ip route get - 獲取單個路由條目
ip route get TYPE PRIFIX
舉例:
1.添加路由表
去往192.168.251.0網段的 下一跳是192.168.251.1 通過設備ens37 src地址設置為 192.168.253.159
ip route add 192.168.251.0 via 192.168.251.1 dev ens37 src 192.168.253.159
2.查看路由表
ip route list 或者 ip route show
3.清空ens37相關路由表
ip route flush dev ens37
4.獲取目標網絡為192.168.253.0/24的路由條目
5.刪除目標網絡為192.168.251.0路由條目
6.設置默認網關 ip route add default via 192.168.253.158
7.刪除默認網關 ip route del default via 192.168.253.158
ss命令:
格式:ss [options] [ FILTER ]
常用選項:
- -t:TCP協議的相關連接
- -u:UDP相關的連接
- -w:raw socket相關的連接
- -l:監聽狀態的連接
- -a:所有狀態的連接
- -n:數字格式
- -p:相關的程序及其PID
- -e:擴展格式信息
- -m:內存用量
- -o:計時器信息
- FILTER := [ state TCP-STATE ] [ EXPRESSION ]
常見用法:
ss -tan 數字格式顯示tcp所有狀態的連接
ss -uan 數字格式顯示udp所有狀態的連接
ss -tnl 數字格式顯示tcp 監聽狀態的連接
ss -unl, 數字格式顯示udp連接中監聽狀態的連接
ss -tunlp 數字格式顯示udp與tcp狀態的連接以及相關程序
ss -tan ‘( dport = :22 or sport = :22 )’ 數字格式顯示源端口或目的端口為22的所有tcp連接
ss -tan state ESTABLISHED 數字格式顯示tcp狀態為established的連接
3、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
htop
簡介:交互式查看進程,被認為top的升級版,可以支持鼠標點擊操作,這個命令要自己安裝官方鏡像源沒有這個源碼包
源碼包安裝:
- 下載相關的依賴
yum install ncurses-devel gcc gcc-devel -y
- 解壓tar包,下載地址http://hisham.hm/htop/releases/2.0.0/
cd /usr/local/src wget http://hisham.hm/htop/releases/2.0.0/htop-2.0.0.tar.gz tar -zxf htop-2.0.0.tar.gz cd htop-2.0.0
- 下載安裝htop
./configure --prefix=/usr/local/htop make&& make install
- 設置環境變量
echo 'PATH=/usr/local/htop/bin:$PATH' > /etc/profile.d/htop.sh . /etc/profile
- 測試,命令行輸入htop命令
表示成功
常用選項:
- -d #:指定延遲時間間隔;
- -u UserName:僅顯示指定用戶的進程;
- -s COLUME:以指定字段進行排序;
交互命令:
- F1:查看幫助
- F2:自定義htop頁面
- F3或/:搜索
- F4或\:過濾
- F5或t:以層級關系顯示各進程狀態;
- F6:排序的方式
- F7:nice值-1
- F8:nice值+1
- F9:發送信號(1-15)
- F10:退出
- u:顯示指定用戶進程
- P、M、T:按照cpu,mem,Time排序
- l:顯示選定的進程打開的文件列表;
- s:跟蹤選定的進程的系統調用;
- a:將選定的進程綁定至某指定的CPU核心;
- I(大寫i):反向排序
- e:顯示環境變量
htop面板解釋:
系統概況:
- CPU:cpu信息
- Mem:內存信息
- Swp:交換分區信息
- Load average:1分鐘,5分鐘,10分鐘內的平均負載
- Uptime:開機了多久
- Time:當前時間
進程詳細信息
- PID:進程PID
- USER:進程所屬的用戶
- PRI:優先級
- NI:nice值
- VIRT:虛擬內存集,申請的內存總量,假設申請了100m,但是實際只用了10m則這里還是顯示100m ,當10m不夠需要更多內存的時候,內核才會真正再繼續分配內存給他。
- RES:常駐內存集,使用的物理內存的總和
- SHR:與其他進程共享的內存
- S:程序狀態一般有如下幾種
- R:running 運行狀態
- S:interruptable sleeping 可中斷睡眠
- D:uninterruptable sleeping 不可中斷睡眠
- T:Stopped 停止狀態
- Z:zombie 僵尸進程
- CPU%:cpu占比
- MEM%:內存占比
- TIME+:累計運行時間
- Command:命令
vmstat命令
簡介:報告虛擬內存統計信息
格式:vmstat [options] [delay [count]]
輸出的信息:
- procs:
- r:等待運行的進程的個數;CPU上等待運行的任務的隊列長度;
- b:處于不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度;
- memory:
- swpd:交換內存使用總量;
- free:空閑的物理內存總量;
- buffer:用于buffer的內存總量;
- cache:用于cache的內存總量;
- swap
- si:數據進入swap中的數據速率(kb/s)
- so:數據離開swap的速率(kb/s)
- io
- bi:從塊設備讀入數據到系統的速度(kb/s)
- bo:保存數據至塊設備的速率(kb/s)
- system
- in:interrupts,中斷速率;
- cs:context switch, 上下文 切換的速率;
- cpu
- us: user space 用戶占CPU占比
- sy:system 系統占比
- id:idle 空閑占比
- wa:wait 等待io時間
- st: stolen 被偷走的時間,虛擬化之類的
常用選項:
- -s:顯示內存統計數據;
- DELAY [COUNT]:延遲多久刷新一次,刷新多少次退出
舉例:
1.顯示內存統計數
vmstat -s
2.動態顯示統計數據,2s刷新一次
vmstat 2
3.動態顯示統計數據,3s刷新一次,一共輸出4次
dstat命令:
簡介:用于生成系統資源統計數據的通用工具
格式:dstat [-afv] [options..] [delay [count]]
常用選項:默認 -cdngy
- -c, –cpu:顯示cpu相關信息;
- -C #,#,…,total:查看某個cpu
- -d, –disk:顯示磁盤的相關信息
- -D sda,sdb,…,tobal:查看某個磁盤
- -g:顯示內存頁page相關的速率數據;
- -m:Memory的相關統計數據
- -n:Interface的相關統計數據;
- -N:指定網絡接口
- -p:顯示process的相關統計數據;
- -r:顯示io請求的相關的統計數據;
- -s:顯示swapped的相關統計數據;
- -l(小寫L): 查看1m,5m,10m負載
- -t:顯示當前時間
- -y:系統信息
- –tcp :tcp套接字狀態
- –udp:udp套接字狀態
- –raw :裸套接字狀態
- –socket :套接字狀態 (total, tcp, udp, raw, ip-fragments)
- –ipc:ipc狀態(message queue, semaphores, shared memory)
- –top-cpu:顯示最占用CPU的進程;
- –top-io:最占用io的進程;
- –top-mem:最占用內存的進程;
- –top-lantency:延遲最大的進程;
例子:
1.顯示ens33網卡接口信息
dstat -Nens33 -n
2.顯示tcp套接字狀態信息
dstat –tcp
3.顯示cpu,磁盤,網絡,內存頁,系統信息(默認)
dstat -cdngy
4.查看內存狀態信息
4、使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,若ping通則輸出”success!”,若ping不通則輸出”fail!”
while方法
[root@localhost ~]# cat shell/ping_while.sh
#!/bin/bash
#
i=0
while [[ $i -le 255 ]]
do
ping -c 2 192.168.150.${i} &> /dev/null
if [[ $? -eq 0 ]]
then
echo -e "192.168.150.${i}\t success!\n"
else
echo -e "192.168.150.${i}\t fail!\n"
fi
i=$((i+1))
done
until方法
[root@localhost ~]# cat shell/ping_until.sh
#!/bin/bash
#
i=0
until [[ $i -gt 255 ]]
do
ping -c 3 192.168.150.${i} &> /dev/null
if [[ $? -eq 0 ]]
then
echo -e "192.168.150.${i}\t success!\n"
else
echo -e "192.168.150.${i}\t fail!\n"
fi
i=$((i+1))
done
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103880