我有一臺設備在我的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