linux下带时间ping
环境linux
近日由于无法判断一个网络问题故此要长ping一个地址,但有一个问题出现,当出现网络异常的时候即使ping的时候发现了超时却无法记录具体是什么时间点发生的异常,也就是说无法记录ping的时间点。
根据这个问题我详细查询了ping命令的参数,可以出没有任何参数可以使ping命令在执行的时候带有时间记录,但查询了各类资料和函数后发现可以用组合命令来实现为的需求。
引用此博客内容https://blog.csdn.net/lxypeter521/article/details/80942888
可以对ping命令和其他函数进行组合从而实现带时间的ping。
呈现如下结果:
ping 192.168.0.1 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) }'
PING 192.168.0.1 (10.37.190.10) 56(84) bytes of data. 16:24:25
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.693 ms 16:24:25
把信息输入到文本
ping 192.168.0.1 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) }' > ping.log
把任务放到后台运行
ping 192.168.0.1 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) }' > ping.log &
然后处于学习的目的查询了strftime函数的用法,发现这个函数还有好多参数可用。
转换控制符见下表
| 转换控制符 | 说明 |
| %a | 星期几的简写形式 |
| %A | 星期几的全称 |
| %b | 月份的简写形式 |
| %B | 月份的全称 |
| %c | 日期和时间 |
| %d | 月份中的日期,0-31 |
| %H | 小时,00-23 |
| %I | 12进制小时钟点,01-12 |
| %j | 年份中的日期,001-366 |
| %m | 年份中的月份,01-12 |
| %M | 分,00-59 |
| %p | 上午或下午 |
| %S | 秒,00-60 |
| %u | 星期几,1-7 |
| %w | 星期几,0-6 |
| %x | 当地格式的日期 |
| %X | 当地格式的时间 |
| %y | 年份中的最后两位数,00-99 |
| %Y | 年 |
| %Z | 地理时区名称 |
根据这些参数我认为选择%c是最好的选择,组合命令后输入格式如下:
# ping 127.0.0.1 | awk '{ print $0"\t" strftime("%c",systime()) }'
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 2019年04月03日 星期三 13时07分56秒
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.060 ms 2019年04月03日 星期三 13时07分56秒
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.065 ms 2019年04月03日 星期三 13时07分57秒
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.056 ms 2019年04月03日 星期三 13时07分58秒
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.051 ms 2019年04月03日 星期三 13时07分59秒
至此linux下带时间ping的问题解决。