将日期和监视命令的输出存储到文件中

将日期和监视命令的输出存储到文件中

我是 Linux 新手,我正在尝试观察一个命令并将其记录到一个文件中。我试过了

watch -t -n 10 "(日期'+TIME:%H:%M:%S'; ps aux | grep "模式" | wc -l)" >> 日志文件

并期望得到如下结果

TIME: 10:32:30    12
TIME: 10:32:40    18
TIME: 10:32:50    2

存储在日志文件中。但是,当日志文件中有不可打印的字符时。如何从命令行获取此类输出

答案1

为了完成您要寻找的操作,一个简单的脚本(正如@Ignacio 指出的那样)就可以解决问题:

while true
do
    echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
    sleep 2
done

我使用tee而不是>>,以便您可以在终端上看到输出并将其捕获到日志中。

答案2

watch无需使用任何脚本就可以轻松完成此操作。

watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"

答案3

watch用于输出到显示器。如果您只是想每隔 X 秒运行一次命令,那么您应该使用延迟循环。

while true ; do somecommand ; sleep 2 ; done

答案4

好的,我将其放入脚本中并得到以下代码:

#!/bin/sh
NOW=$(date '+%Y%m%d%H%M%S')
LOGFILE="log.$NOW"

while true
do
    echo $(date '+[TIME: %H:%M:%S]   Output: ' ; ps aux | grep "pattern" | wc -l ) | tee -a $LOGFILE
    sleep 2
done

相关内容