Answers:
为了执行您想要的操作,一个简单的脚本(如@Ignacio所指出的)应该可以解决问题:
while true
do
echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
sleep 2
done
我使用tee
代替,>>
这样您就可以在终端上看到输出并在日志中捕获它。
ps
。我将修改我的答案。
watch
用于输出到显示器。如果您只想每隔X秒运行一条命令,则应该使用一个延迟循环。
while true ; do somecommand ; sleep 2 ; done
当我尝试从中获得更好的/记录的输出时,遇到了这个问题du -sh $data_path
。我使用了此处找到的“ while命令,请执行睡眠”模式,但使用了一些复杂的AWK来提供所需的输出。
while du -sh $data_path; do sleep 1; done | awk '
$1 != size {
size=$1;
path=$2;
time=systime();
seconds=time-prevtime;
if(seconds < 1000000000){
seconds=seconds" seconds"
}else{
seconds=""
}
print size, path, strftime("%m/%d/%Y@%H:%M:%S", time), seconds;
prevtime=time
}'
实际上,我是作为oneliner这样做的,这就是为什么要使用分号的原因。但是为了使其可读性,我将其发布。输出如下:
502G /var/lib/cassandra/dump/ 05/22/2018@04:46:17
503G /var/lib/cassandra/dump/ 05/22/2018@04:46:59 42 seconds
504G /var/lib/cassandra/dump/ 05/22/2018@04:47:57 58 seconds
505G /var/lib/cassandra/dump/ 05/22/2018@04:48:55 58 seconds
506G /var/lib/cassandra/dump/ 05/22/2018@04:49:53 58 seconds
507G /var/lib/cassandra/dump/ 05/22/2018@04:50:50 57 seconds
508G /var/lib/cassandra/dump/ 05/22/2018@04:51:46 56 seconds
509G /var/lib/cassandra/dump/ 05/22/2018@04:52:44 58 seconds
510G /var/lib/cassandra/dump/ 05/22/2018@04:53:41 57 seconds
这里是我只需要一个示例watch
上的ps axf
与在整个输出的底部的时间戳。我正在监视Apache何时失败。tee
对于每个命令,我必须使用管道输送到ps
和date
。
watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'
tail --follow logfile-apache-issue.log
在结果文件上输出的示例。
29862 ? S 0:00 \_ /usr/sbin/apache2 -k start
29863 ? S 0:00 \_ /usr/sbin/apache2 -k start
29864 ? S 0:00 \_ /usr/sbin/apache2 -k start
29865 ? S 0:00 \_ /usr/sbin/apache2 -k start
26635 pts/2 S+ 0:00 | \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:13
13622 ? SN 0:33 \_ /usr/sbin/apache2 -k start
25038 ? Ss 0:01 \_ /usr/sbin/apache2 -k start
29859 ? S 0:00 \_ /usr/sbin/apache2 -k start
29860 ? S 0:00 \_ /usr/sbin/apache2 -k start
29861 ? S 0:00 \_ /usr/sbin/apache2 -k start
29862 ? S 0:00 \_ /usr/sbin/apache2 -k start
29863 ? S 0:00 \_ /usr/sbin/apache2 -k start
29864 ? S 0:00 \_ /usr/sbin/apache2 -k start
29865 ? S 0:00 \_ /usr/sbin/apache2 -k start
26635 pts/2 S+ 0:00 | \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:15
13622 ? SN 0:33 \_ /usr/sbin/apache2 -k start
25038 ? Ss 0:01 \_ /usr/sbin/apache2 -k start
29859 ? S 0:00 \_ /usr/sbin/apache2 -k start
29860 ? S 0:00 \_ /usr/sbin/apache2 -k start
29861 ? S 0:00 \_ /usr/sbin/apache2 -k start
29862 ? S 0:00 \_ /usr/sbin/apache2 -k start
29863 ? S 0:00 \_ /usr/sbin/apache2 -k start
29864 ? S 0:00 \_ /usr/sbin/apache2 -k start
29865 ? S 0:00 \_ /usr/sbin/apache2 -k start
26635 pts/2 S+ 0:00 | \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:16