我有一台设备在我的PC旁边运行,当它运行时它正在将它的串行端口吐出日志行。我有这样的有线到我的电脑,我可以看到日志行的罚款,如果我使用的是无论是小型机或类似的东西:grep从shell脚本内的串行端口输入5秒钟
ttylog -b 115200 -d /dev/ttyS0
我要5秒设备串行输出写入到一个临时文件(或将它分配给一个变量),然后在那个文件中找到关键字,让我知道设备的运行方式。我已经尝试将输出重定向到一个文件,同时在后台运行该命令,然后休眠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 &
在两种情况下我见过的任何日志行记录到标准输出或日志文件,除非我有错ttylog运行的多个版本(见注释行,d '哦)。
我不知道这里发生了什么。这似乎是我的脚本中重定向失败。
我在正确的轨道上吗?有没有更好的方法来抽样5秒的串口?
为什么不给每个第N行添加一个时间戳并记录104秒的数据,然后使用某个实用程序将它分成20-21个块? – 2009-12-29 22:09:09
如果你添加'jobs -l; 'serialPID = $!'后的echo $ serialPID'是否匹配PID? – 2009-12-29 22:53:53
@lpthnc我有1到200个命令可以发布,其中任何一个命令都可能向push-pop堆栈中添加更多命令,所以我只想一次处理一个命令。 该脚本还可以运行The Box并自动发出正在测试的命令。我真的想保持在“开始录音 - 发布命令 - 停止录制 - grep获得结果 - 更新统计信息”算法 – pica 2009-12-29 23:51:44