我通过 访问串行测量设备screen /dev/tty.usbserial 9600
。设备在测量时会输出其数据n每秒在一行上记录次。我怎样才能在每一行(或每隔几行,如果它使日志速度太慢)添加一个时间戳?
我在 OSX 10.8.2 上使用 Terminal.app 作为我的终端。
答案1
我找不到任何方法让屏幕打印时间戳。相反,创建屏幕的日志文件并使用 awk 打印它效果很好!
1. 创建(或编辑)~/.screenrc 以让屏幕创建日志文件。
将日志配置添加到主目录中的 .screenrc(屏幕的配置文件)。
logfile "/path/to/log/file" # Specify log file name with absolute path.
logfile flush 1
deflog on
2. 开始屏幕
$ screen /dev/tty.usbserial 9600 -L
然后 screen 开始创建日志文件。(还有其他一些创建日志文件的方法。)
3.使用tail + awk打印文件
在另一个终端窗口中运行此 shell 命令。
$ tail -f screen.log | awk '{ print strftime("%H:%M:%S"), $0; fflush(); }'
它打印带有时间戳的日志文件!
15:41:27 xxx
15:41:28 xxx
15:41:29 xxx
15:41:30 xxx
15:41:31 xxx
如果您想将带有时间戳的日志打印到标准输出和文件,请将其通过管道传输到 tee 命令。
$ tail -f /path/to/log/file | awk '{print strftime("%H:%M:%S"),$0; fflush();}' | tee /path/to/another/file