You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为fping重定向后的「host unreachable」错误信息添加时间戳?

给fping的「host unreachable」错误信息添加时间戳

这个问题我之前也碰到过——fping的标准输出可能自带一些状态标识,但标准错误流里的「host unreachable」这类报错确实不会自动加上时间戳,重定向到文件后就很难定位问题发生的时间点。这里有几个实用的解决办法,按上手难度排序:

1. 用ts工具(最省心的方案)

ts是moreutils工具集里的一个小工具,专门用来给每行输出打时间戳,用法超简单。首先得确保你的系统安装了moreutils:

  • Debian/Ubuntu系:sudo apt install moreutils
  • RHEL/CentOS系:sudo yum install moreutils

然后用进程替换把stderr单独引出来处理,再和stdout合并到同一个日志文件:

# 替换成你的fping参数,比如-f hosts.txt指定目标主机列表
fping -f hosts.txt 2> >(ts '[%Y-%m-%d %H:%M:%S]' >> fping.log) > fping.log

这个命令里,2> >(...)会把fping的标准错误流传给ts工具,ts给每行加上时间戳后追加到日志文件;而标准输出流则直接写入同一个日志文件,互不干扰。

2. 用awk+bash内置功能(无需额外安装工具)

如果不想装新软件,用bash的进程替换配合awk也能搞定。awk自带strftime函数可以生成时间戳,直接处理stderr即可:

fping -f hosts.txt 2> >(awk '{print strftime("[%Y-%m-%d %H:%M:%S]"), $0}' >> fping.log) > fping.log

效果和用ts一样,只是把加时间戳的工作交给了awk,适合不能随便装软件的服务器环境。

3. 给所有输出统一加时间戳(可选)

如果希望不管是正常输出还是错误信息,所有内容都带上时间戳,也可以把fping的所有输出(stdout+stderr)都通过ts处理:

fping -f hosts.txt 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' > fping.log

不过要注意,如果fping的标准输出本身已经带有时间信息,这么做会导致时间戳重复,所以根据你的实际需求选择就好。

小提示

时间戳的格式可以自定义,比如用ts '%F %T'或者awk里的strftime("%F %T"),%F是YYYY-MM-DD,%T是HH:MM:SS,写出来更简洁。另外,进程替换是bash的特性,如果你的默认shell是sh,可能需要先切换到bash再执行命令。

内容的提问来源于stack exchange,提问作者jonathan_whitelist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:33:16