我想对每分钟添加到日志文件的行数进行一些简单的计算。我还想存储每秒的计数。
我需要的是以下命令的输出作为列表,该列表每秒更新一次:
watch -n1 'wc -l my.log'
如何将“watch”命令的“更新”输出为列表?
答案1
您可以使用-t
开关watch
使其不打印标题。但是,这仍然会清除屏幕,因此您最好使用简单的 shell 循环:
while sleep 1; do
wc -l my.log
done
优点之一是,您可以轻松添加其他命令(例如date
)和/或通过管道传输输出sed
以重新格式化它。顺便说一句,如果你在循环中交换,它会因错误而自动终止sleep 1
。wc
答案2
这是一个老问题,但我刚刚找到了一个非常简单的答案:
watch -n1 'wc -l my.log | tee -a statistics.log'
这将wc
每秒执行一次,将其输出添加到 statistics.log 文件,并将其显示在屏幕上。
因此,您最终会得到一个充满数字的文件,代表连续的行数my.log
。
答案3
您可以创建一个脚本来为您完成此操作。我打电话给我的keep
(就像,继续这样做)并将其放在bin
路径上。
这是我的脚本:
#!/bin/bash
echo "Repeating command $* every second"
while sleep 1; do
"$@"
done
答案4
请尝试以下操作:
watch -n1 'wc -l my.log >> statistics.log'