首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell-script中grep 5秒的串口输入

在shell-script中grep 5秒的串口输入
EN

Stack Overflow用户
提问于 2009-12-30 06:01:37
回答 3查看 2.7K关注 0票数 2

我有一个设备,我正在我的PC旁边操作,当它运行的时候,它的串口吐出了日志线。我把这个连接到我的PC上,如果我使用minicom或类似的东西,我可以很好地看到日志线:

代码语言:javascript
复制
ttylog -b 115200 -d /dev/ttyS0

我想要将设备串行输出的5秒写入一个临时文件(或将其赋给一个变量),然后在该文件中使用grep关键字,这样我就可以知道设备是如何运行的。我已经尝试在后台运行命令时将输出重定向到一个文件,然后休眠5秒并终止进程,但日志行从未写入到我的临时文件中。示例:

代码语言:javascript
复制
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行替换为:

代码语言:javascript
复制
ttylog -b 115200 -d /dev/ttyS0 |tee -a tempFile & 

在这两种情况下,我都没有看到任何日志行记录到stdout或日志文件中,除非我错误地运行了ttylog的多个版本(参见注释掉的行,D‘’oh)。

我不知道这是怎么回事。这似乎是我的脚本中的重定向失败。

我在正确的轨道上吗?有没有更好的方法来采样5秒的串行端口?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-30 06:10:08

听起来好像ttylog正在缓冲它的输出。您是否尝试过使用-f或--flush运行它?

票数 3
EN

Stack Overflow用户

发布于 2009-12-30 14:29:51

您可以尝试使用expect附带的unbuffer脚本。

票数 0
EN

Stack Overflow用户

发布于 2019-05-08 19:50:07

ttylog有一个--timeout选项,您可以简单地指定它应该运行的秒数。

因此,在您的情况下,您可以这样做

代码语言:javascript
复制
ttylog --baud 115200 --device /dev/ttyS0 --timeout 5

它只会运行5秒,然后停止。实际上,它还具有前面提到的刷新-f选项,但如果您使用--timeout,则不需要该选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1977216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档