linux環境使用ping指令+時間戳記錄到檔案裡面
生産環境中, 網絡是否穩定(網絡時延)是一個很重要的名額. 為了友善檢查網絡時延的大小, 我們可以通過ping指令實作長時間的網絡監控。
一、ping指令的使用
1、 常用參數
-i: 每次執行ping操作的間隔時間, 預設是1s;
-c: 執行ping操作的次數, 預設是一直執行, 除非被中斷;
-s:指定執行ping操作時發送的包的大小, 預設是56B, 添加封包頭之後, 最終發送的是64B.
2、 使用示例# 在終端 ping 某個位址, 執行10次
# ping 112.80.248.75 -c 10 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } '
#背景運作記錄到檔案裡面,但終端不能斷開的,語句如下:
nohup ping 112.80.248.75 -c 10 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } '>ping1.log &
2.1、日期時間在後面:# ping 112.80.248.75 | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()); fflush()}' >> long_ping.txt
PING 112.80.248.75 (112.80.248.75) 56(84) bytes of data. 2020-04-03 16:59:44
64 bytes from 112.80.248.75: icmp_seq=1 ttl=55 time=3.66 ms 2020-04-03 16:59:44
64 bytes from 112.80.248.75: icmp_seq=2 ttl=55 time=4.90 ms 2020-04-03 16:59:45
64 bytes from 112.80.248.75: icmp_seq=3 ttl=55 time=4.02 ms 2020-04-03 16:59:46
2.2、日期時間在前面:# ping 112.80.248.75 | awk '{ print strftime("%Y.%m.%d %H:%M:%S",systime())"\t" $0; fflush() }' >> long_ping.txt
2020.04.03 17:00:36 PING 112.80.248.75 (112.80.248.75) 56(84) bytes of data.
2020.04.03 17:00:36 64 bytes from 112.80.248.75: icmp_seq=1 ttl=55 time=3.22 ms
2020.04.03 17:00:37 64 bytes from 112.80.248.75: icmp_seq=2 ttl=55 time=3.72 ms
2020.04.03 17:00:38 64 bytes from 112.80.248.75: icmp_seq=3 ttl=55 time=4.91 ms
2020.04.03 17:00:39 64 bytes from 112.80.248.75: icmp_seq=4 ttl=55 time=3.95 ms
注意:使用fflush(),不然檔案不會有資訊,因為awk也是有緩存的。
下面未加fflush(),執行指令生成檔案會等一會才會有資訊列印到檔案裡ping 112.80.248.75 | awk '{ print strftime("%Y.%m.%d %H:%M:%S",systime())"\t" $0 }'>> long_ping.txt &
二、通過腳本記錄時間戳
為了友善後期檢視, 也防止退出終端時指令被中斷, 我們可以通過背景運作指令(腳本)的方式進行操作.
腳本内容如下:# vi long_ping.sh
#!/bin/bash
ping 112.80.248.75 | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()); fflush()}' >> long_ping.txt
注意: 隻有當腳本運作結束(或被kill掉), awk指令 才會将結果輸出到檔案中.
為防止腳本被中斷, 可以通過 nohup 令腳本在背景執行:nohup sh long_ping.sh &
要結束背景程序, 可通過下述方式查找并kill:# ps -ef |grep long
root 17341 17236 0 16:46 pts/3 00:00:00 sh long_ping.sh
root 17351 17236 0 16:47 pts/3 00:00:00 grep --color=auto long