1、簡述osi七層模型和TCP/IP五層模型
應用層
運行著應用程序的協議http、ftp、tftp等
表示層
將應用層所編輯的數據進行加密或解密,沒有協議
會話層
決定一次數據傳輸發起和接收會話請求,沒有協議
傳輸層
根據選著的協議類型,決定是否將數據分割或重組,協議:tcp、udp等
網絡層
編輯邏輯地址信息(原站點、目的站點)和路由選著(ARP)協議:ip等
數據鏈路層
進行物理尋址、將數據轉化為幀或解析,協議:PPP等
物理層
用于規定機械的、電器的、功能和過程的特性進行bit傳輸。協議:ieee 802.1a等
2、簡述iproute家族命令
iproute 家族命令
iproute 是一組網絡管理命令的集合,其中有ip、route、ss、等等
ip 命令
用來顯示操作路由、設備、策略路由和隧道的狀態
用法簡介:
ip [ OPTIONS ] OBJECT { COMMAND | help }
常用 OBJECT 命令:
- link
- address
- route
- netns
link 常用子命令:
管理網絡設配配置
- ip link set { DEVICE | dev DEVICE | } { COMMAND } 設置網絡配置
- dev NAME(default): 指明要管理的設備,dev可省略
- up | down:啟用或禁用設備
- multicast on | multicast off:啟用或禁用組播
- name NAME:設置接口名 【需要先停用設備】
- mtu NUMBER: 修改mtu默認值,
- netns PID | namespace:把接口移動到指定的網絡名稱空間。
- ip link show [ dev DEVICE ] : 查看二級設備屬性
- ip link help : 顯示簡要使用說明
netns 常用子命令:
管理網路的命令空間
- ip netns { COMMAND | help }
- list: 列出所有的網絡命令空間
- add NAME: 創建指定的網絡命令空間
- del NAME: 刪除指定的網絡命令空間
- exec NAME COMMAND: 在指定的網絡命令空間中運行命令
address 常用子命令:
管理網絡協議端口,
- ip addr add IFADDR dev IFACE [ LIFETIME ] [ CONFFLAG-LIST ]
- [label NAME]:為額外添加的地址指明接口別名。
- [broadcast ADDRESS]: 廣播地址,會根據ip 和 NETMASK自動計算得到。
- [scope SCOPE_VALUE]
- global:全局可用,可ping通
- link:接口可用,自己可ping
- host:僅本機可用,不可被ping
- ip address delete 刪除網絡協議地址
- ip address show 顯示接口協議地址
- ip address flush 清空網絡協議地址
route 常用子命令:
管理路由表
- ip route { COMMAND }
- add TYPE PREFIX via GW [dev_IFACE] [src_SOURCE_IP]: 添加路由
- change :修改路由
- replace :存在則替換否則添加一個新的
- delete TYPE PRIFIX :刪除路由
- show [ TYPE PRIFIX ]:顯示路由地址
- flush TYPE PRIFIX:清除路由表
- get TYPE PRIFIX : 獲取指定路由狀態
ss 命令
用來過濾顯示 套接字的相關工具
ss [options] [FILTER]
常用選項:
- -t:TCP協議的相關連接
- -u:UDP相關的連接
- -w:raw socket相關的連接 (裸套接字)
- -l:監聽狀態的連接
- -a:所有狀態的連接
- -p:相關的程序及其PID
- -e:擴展格式信息
- -m:內存用量
- -o:計時器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ] 只看某種狀態的連接 額外的表達式?TCP的常見狀態:?TCP FSM:LISTEN:監聽狀態?ESTABLISEHD:已建立的連接,?FIN_WAIT_1:等待結束的?FIN_WAIT_2:確認結束的?SYN_SENT:已經結束?SYN_RECV: * CLOSED:
EXPRESSION:?dport =?sport = 目標端口 源端口
3、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
htop 命令
交互式的進程查看器,特點是可定制顯示標題及鼠標操作
常用選項:
- -d #:指定延時間隔。
- -u userNAME: 僅顯示指定用戶的數據。
- -s COLUME: 以指定字段進行排序。
操作界面子命令:
- l:顯示選定的進程打開的文件列表
- s:跟著選定的今晨的系統調用
- t:以層級關系顯示各進程狀態
- a:將選定的進程綁定至某指定的cpu核心
界面:
左欄顯示:
- CPU:使用百分比
- sys:內核使用百分比
- Mem:內存總量
- used:用戶內存使用容量
- buffers: 內存緩存的緩沖空間
右欄顯示:
- Tasks: 進程數
- runing: 運行中的程序數
- Load acerage:平均負載
- Uptime:系統啟動的累計時間
表顯示:
- USER: 進程所占用用戶空間百分比
- PID: 進程號
- PRI: 進程優先級
- NI: nice進程的優先級
- VIRT: 進程占用的虛擬內存
- RES: 進程占用的物理內存
- SHR: 進程占用的共享內存
- PPTID: 此進程的父進程號
- S: 進程的運行狀況
- R:運行中
- S:休眠中
- z:僵尸進程
- CPU%: 進程的cpu占用百分比
- MEM%: 進程的內存占用百分比
- TIME+: 進程開啟的累計時間
- Command: 運行的進程
快捷鍵解釋:
F1: help 幫助文件
?F1 ? h:查看幫助文件?F2 S: 自定義查看界面?F3 |/: 增量查詢?F4 |\: 增量查詢并且只顯示查詢到的內容?F5 |t: 樹狀顯示層級關系?F6 + -: 選著排序方式?F7 |]: 減小進程優先級?F8 |[: 增加進程優先級?F9 |k:殺死選定的進程?F10 |q : 退出?u:只顯示指定用戶的進程?U:取消標記所有的進程H:顯示或隱藏用戶進程?K:顯示或隱藏用戶線程?F:跟蹤進程?P:按CPU使用排序?M:按內存使用排序?T:按開啟累計時間排序?i:顯示進程打開的文件?I:倒轉排序順序 * s:跟中選中的進程的系統調用
F2: 設置
- Setup:設定選項
- Meters:表
- left column:左欄顯示內容
- Right column:右欄顯示內容
- Available meters:可選用表
Meters:調整可使用的表
可用快捷鍵:?Enter:首次點擊為選定,再次點擊放置?UP:向上移動?Dn:向下移動?Lt:向左移動?Rt:向右移動?Space:切換顯示模式 [ ]?Del:刪除表?Esc:完成并返回主界面
Display options:顯示選項
- [x]:啟用
- [ ]: 禁用
可用快捷鍵:?space:啟用或禁用?UP:向上移動?Dn:向下移動?Lt:向左移動?Rt:向右移動?鼠標點擊啟用或禁用 * Esc:完成并返回主界面
Colors:修改主題顏色
- [x]:啟用
- [ ]: 禁用
可用快捷鍵:?space:啟用或禁用?UP:向上移動?Dn:向下移動?Lt:向左移動?Rt:向右移動?鼠標點擊啟用或禁用 * Esc:完成并返回主界面
Columns:自定顯示欄
設定后的效果
可用快捷鍵:?Enter:在可用表欄點擊可直接添加,?UP 或 F7:向上移動?Dn 或 F8:向下移動?Del 或 F9 :刪除表 * Esc:完成并返回主界面
F3 進行條件查詢
vmstat 命令
報告虛擬內存的統計數據
語法格式:
vmstat [OPTIONS] [delay[count]]
常用選項:
-s:顯示內存的統計數據:
- procs:
- r:等待運行的進程的個數;CPU上等待運行的任務的隊列長度;
- b:處于不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度;
- memory:
- swpd:交換內存使用總量;(生產環境中盡量不使用虛擬內存,會拖慢速度)
- free:空閑的物理內存總量;
- buffer:用于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 用戶空間占用百分比
- sy:system 運行內核所占用的百分比u
- id:idle 空閑的
- wa:wait 等待io完成的
- st: stolen 被虛擬化偷走的時間
示例:每2秒更新一次數據
示例:vmtat -s 詳情模式顯示
pmap 命令
通過抽取cat /proc/PID/maps用來顯示內存映射表
語法格式:
pmap [options] pid […]
常用選項:
-x:顯示詳細格式的信息
示例: -x
示例:cat /proc/2555/maps
glances 命令
基于cross平臺研發的夸平臺監控工具,系統內并未攜帶此款軟件需要進行下載
安裝包下載地址:www.psgk.org
依次下載并安裝 如果不需要將信息保存為HTML格式文件可以忽略1、2、
1、python-babel-0.9.4-5.1.el6.noarch.rpm
2、python-jinja2-2.2.1-3.el6.x86_64.rpm
3、 python-psutil-0.6.1-1.el6.x86_64.rpm
4、python-setuptools-0.6.10-3.el6.noarch.rpm
5、glances-1.7.4-1.el6.noarch.rpm
分欄內容解釋: 首航顯示:計算機名,系統版本及本和版本,啟動累計時間
CPU:cpu使用統計?user:用戶占用cpu百分比?system:內核占用cpu百分比?idle:可用用空閑的cpu百分比?nice:優先級占用cpu百分比
LOAD: 核心平均負載?1 min:1分走?5 min:5分鐘 * 15 min:15分鐘
MEM:物理內存統計?total: 物理內存總量?used: 用戶進程已使用多少?free:可用空閑容量?buffers:被虛擬化偷走的
SWAP:虛擬內存統計?total:虛擬內存總量?used:用戶虛擬內存使用 * free:空閑可使用的
NETWORK:網絡端口狀態?Rx/s:每秒接收的數據包?Tx/s:每秒發送的數據包
DISK I/O:磁盤狀態?R/s: 每秒讀取?W/s: 每秒寫入
FILE SYS:文件暫用磁盤信息?Used:用戶以使用容量?total:總的磁盤量
TASKS:進程詳細統計信息?CPU%:cpu占用百分比?MEM%:內存占用百分比?VIRT:虛擬內存?RES:進程占用的物理內存PID:進程號?USER:啟用進程的用戶?NI:優先級?S:進程狀態?S: 休眠中?R: 運行中?Z:僵死的?TIME+:進程累計啟動時間IOW/s:進程的讀、寫?Command:運行此進程的命令
查看時還可使用常用選項停止指定信息刷新或將此時的運行裝抽象成文件形式進行保存。
- -b:以Byte為單位顯示網上數據速率;
- -d:關閉磁盤I/O模塊;
- -m:關閉mount模塊;
- -n:關閉network模塊;
- -t #:刷新時間間隔;修改延時
- -1:每個cpu的相關數據單獨顯示;
- -o {HTML|CSV}:輸出格式; 可使用瀏覽器查看 centos 7 只有CSV格式
- -f /PATH/TO/SOMEDIR:設定輸出文件的位置;
禁用選項: -b -d -m -n -t 1
[root@MiWiFi-R3-srv glances]# glances -b -d -m -n -t 1
C/S模式使用glance 遠程監控服務器系統時:注意版本需要兼容才可以。
1、首先在服務器打開模式: glances -s -B IPADDR
2、客戶端模式: glances -c IPADDR
dstat 命令
非常精巧的生成系統統計數據的工具,使用命令可以獨立的查看指定設備的信息。
dstat [-afv] [options..] [delay [COUNT]]
可使用yum install dstat -y 進行安裝下載
可用選項:?-c:顯示cpu相關的狀態?-d:顯示磁盤的狀態?-g:顯示磁盤的輸入輸出信息?-m:顯示物理內存使用率?-p:顯示進程過程狀態?-r:顯示系統的輸入、輸出
進程間通信:?–top-cpu:顯示最占用cpu的進程?–top-io:最占用輸入、出的進程?–top-mem:最占用內存的進程?–top-lantency:延時最大的進程
4、使用until和while分別實現192.168.0.0/24
網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”
for
#!/bin/bash
#
declare -i sum=0
for i in {1..255};do
ping -c 1 192.168.0.$[$sum+$i] > /dev/null
if [ $? -eq 0 ];then
echo "192.168.0.$i success!"
else
echo "192.168.0.$i fail!"
fi
done
while
#!/bin/bash
#
declare -i sum=0
declare -i i=1
while [ $i -le 255 ]; do
ping -c 1 192.168.0.$[$sum+$i] >/dev/null
if [ $? -eq 0 ];then
echo "192.168.0.$i success!"
else
echo "192.168.0.$i fail!"
fi
let i++
done
until
#!/bin/bash
#
declare -i sum=0
declare -i i=1
until [ $i -gt 255 ]; do
ping -c 1 192.168.0.$[$sum+$i] >/dev/null
if [ $? -eq 0 ];then
echo "192.168.0.$i success!"
else
echo "192.168.0.$i fail!"
fi
let i++
done
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91474
贊,不錯,希望博文里面的內容能夠在實戰環境下熟練地使用~加油