我有这个(部分)脚本来录制音频:
#!/bin/sh
...
echo Recording to "$REC_FILE"
arecord [options] > "$REC_FILE" &
ARECORD_PID=$!
SYNC_COUNT=1
while kill -0 "$ARECORD_PID" > /dev/null 2>&1
do
sleep 1
# echo $SYNC_COUNT seconds
sync
SYNC_COUNT=$(($SYNC_COUNT+1))
done
echo Recording to "$REC_FILE" has ended.
这被称为record.sh >> "$LOGFILE" 2>&1 &
1 秒<number> seconds
报告的原因是因为arecord
不打印任何计时信息,其错误消息位于stderr
. 因此,要继续进行下去,我必须浏览或聆听可能长达数小时的整个录音,以尝试找出可能有问题或可能没有问题的地方。
我通过将 1 秒计数器打印到同一个日志文件来解决这个直接问题,这样错误消息最终会在文件中的上下都有一个粗略的时间戳,但这确实使事情变得混乱,因为它总是在运行,即使事情是工作得很好。
如何将该计数器的当前值添加到日志文件中的错误消息中,而不总是喷出该计数器,并且不会像这个答案那样arecord
弄乱标准输出上的录音?(或者是吗?)
换句话说,不是在日志文件中,而是在未注释计数器报告的情况下:
Recording to rec.wav
1 seconds
2 seconds
3 seconds
4 seconds
...
5093 seconds
arecord hiccuped but is still running
5094 seconds
...
10283 seconds
10284 seconds
Recording to rec.wav has ended.
我想要这样的东西:
Recording to rec.wav
At 5093 seconds, arecord hiccuped but is still running
Recording to rec.wav has ended.
时间戳的确切格式无关紧要,或者即使它在同一行,只要我仍然有原始错误消息和相对于它发生的记录开始的时间。
使用实用程序(从包中
ts
moreutils
)为输出添加时间戳:所以,运行: