我是 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