Shell - 長 ping 腳本監控網絡狀態


生產環境中, 網絡是否穩定(網絡時延)是一個很重要的指標. 為了方便檢查網絡時延的大小, 我們可以通過ping命令實現長時間的網絡監控.

1 ping 命令的使用

1.1 常用參數

-i: 每次執行ping操作的間隔時間, 默認是1s;

-c: 執行ping操作的次數, 默認是一直執行, 除非被中斷;

-s: 指定執行ping操作時發送的包的大小, 默認是56B, 添加報文頭之后, 最終發送的是64B.

1.2 使用示例

# 在終端 ping 某個地址, 執行3次, 每次間隔2秒, 每次發送10KB的數據:
[root@localhost ~]# ping -c 3 -i 2 -s 10240 172.16.22.132

# 結果如下:
PING 172.16.22.132 (172.16.22.132) 10240(10268) bytes of data.
10248 bytes from 172.16.22.132: icmp_seq=1 ttl=64 time=0.294 ms
10248 bytes from 172.16.22.132: icmp_seq=2 ttl=64 time=0.383 ms
10248 bytes from 172.16.22.132: icmp_seq=3 ttl=64 time=0.391 ms

--- 172.16.22.132 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.294/0.356/0.391/0.043 ms

2 通過腳本記錄時間戳

很多時候, 我們除了監控網絡時延的大小, 還想知道網絡發生抖動時的具體時間 —— 可以將 ping 的結果通過管道進行處理.

為了方便后期查看, 也防止退出終端時命令被中斷, 我們可以通過后台運行命令(腳本)的方式進行操作.

腳本內容如下:

#!/usr/bin/sh

# ping 86400次, 默認間隔1秒, 也就是24小時
ping -c 86400 -i 1 -s 10240 172.16.22.131 | awk '{ print $0"\t" strftime("%D_%H:%M:%S",systime()) }' > ping_result.log

注意: 只有當腳本運行結束(或被kill掉), awk命令 才會將結果輸出到文件中.

為防止腳本被中斷, 可以通過 nohup 令腳本在后台執行:

nohup sh long_ping.sh &

要結束后台進程, 可通過下述方式查找並kill:

[root@localhost ~]# ps aux | grep long
root     36538  0.0  0.0 113120  1344 pts/3    S    16:02   0:00 sh long_ping.sh
root     37451  0.0  0.0 112652   960 pts/3    S+   16:03   0:00 grep --color=auto long
[root@localhost ~]# kill -9 36538

參考資料

centos長ping輸出日志的腳本

版權聲明

作者: 瘦風(https://healchow.com)

出處: 博客園 瘦風-記錄時間(https://www.cnblogs.com/shoufeng)

感謝閱讀, 如果文章有幫助或啟發到你, 點個[好文要頂👆] 或 [推薦👍] 吧😜

本文版權歸博主所有, 歡迎轉載, 但 [必須在文章頁面明顯位置標明原文鏈接], 否則博主保留追究相關人員法律責任的權利.


免責聲明!

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



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