我有一个设备,我正在我的PC旁边操作,当它运行的时候,它的串口吐出了日志线。我把这个连接到我的PC上,如果我使用minicom或类似的东西,我可以很好地看到日志线:
ttylog -b 115200 -d /dev/ttyS0我想要将设备串行输出的5秒写入一个临时文件(或将其赋给一个变量),然后在该文件中使用grep关键字,这样我就可以知道设备是如何运行的。我已经尝试在后台运行命令时将输出重定向到一个文件,然后休眠5秒并终止进程,但日志行从未写入到我的临时文件中。示例:
touch tempFile
ttylog -b 115200 -d /dev/ttyS0 >> tempFile &
serialPID=$!
sleep 5
#kill ${serialPID} #does not work, gets wrong PID
killall ttylog
cat tempFile文件会被创建,但不会填充任何数据。我还可以将ttylog行替换为:
ttylog -b 115200 -d /dev/ttyS0 |tee -a tempFile & 在这两种情况下,我都没有看到任何日志行记录到stdout或日志文件中,除非我错误地运行了ttylog的多个版本(参见注释掉的行,D‘’oh)。
我不知道这是怎么回事。这似乎是我的脚本中的重定向失败。
我在正确的轨道上吗?有没有更好的方法来采样5秒的串行端口?
发布于 2009-12-30 06:10:08
听起来好像ttylog正在缓冲它的输出。您是否尝试过使用-f或--flush运行它?
发布于 2009-12-30 14:29:51
您可以尝试使用expect附带的unbuffer脚本。
发布于 2019-05-08 19:50:07
ttylog有一个--timeout选项,您可以简单地指定它应该运行的秒数。
因此,在您的情况下,您可以这样做
ttylog --baud 115200 --device /dev/ttyS0 --timeout 5它只会运行5秒,然后停止。实际上,它还具有前面提到的刷新-f选项,但如果您使用--timeout,则不需要该选项。
https://stackoverflow.com/questions/1977216
复制相似问题