铭哥,可能你白天忙,只能论坛提问了,最近要写一些shell脚本,需求是每天实时的记录apache的并发数到一个文件,但是我最想保留最近一个星期的数据,我已把脚本初步的模型写好了,如下:
#!/bin/bash
while :; do
time=`date +"%Y%m%d %H:%M:%S"`
N=`ps -ef | grep httpd | wc -l`
echo "$time Now httpd is $N" >> /tmp/httpd.txt
date=`cat /tmp/httpd.txt | awk '{print $1}'`
date1=`date +%Y%m%d --date='7 days ago'`
if [ $date -lt $date1 ];then
sed '/$date/'d /tmp/httpd.txt
fi
sleep 1
done
现在遇到的问题是date=``这行是打印出日期这一列,所以无法和date1比较大小,所以请铭哥在我这个脚本的基础上修改修改,满足我的需求,多谢!
#!/bin/bash
while :; do
time=`date +"%Y%m%d %H:%M:%S"`
N=`ps -ef | grep httpd | wc -l`
echo "$time Now httpd is $N" >> /tmp/httpd.txt
date=`cat /tmp/httpd.txt | awk '{print $1}'`
date1=`date +%Y%m%d --date='7 days ago'`
if [ $date -lt $date1 ];then
sed '/$date/'d /tmp/httpd.txt
fi
sleep 1
done
现在遇到的问题是date=``这行是打印出日期这一列,所以无法和date1比较大小,所以请铭哥在我这个脚本的基础上修改修改,满足我的需求,多谢!
0
要想比较date有一种方法就是 date +%s 这种日期的格式是可以比较的,单位是s
貌似是,当前time与1970-01-01 08:00:00 (CST)的时间差。 如果是UTC可能就是 00:00:00 了吧。
不妨试试看
date +%s --date "1970-01-01 08:00:00"
说完这个时间的问题,该说说你的脚本了,你的脚本我感觉不是很好。你怎么就能想到用sed去删除一星期以前的记录?这个说实话有点困难。你试着参考一下我的脚本吧。
#!/bin/bash
while :; do
time=`date +"%Y%m%d %H:%M:%S"`
d=`date +%m%d`
N=`ps -ef | grep httpd | wc -l`
[ -d /tmp/httpd/ ] || mkdir /tmp/httpd
echo "$time Now httpd is $N" >> /tmp/httpd/$d.txt
find /tmp/httpd/ -mtime +6 |xargs rm -f
sleep 1
done
貌似是,当前time与1970-01-01 08:00:00 (CST)的时间差。 如果是UTC可能就是 00:00:00 了吧。
不妨试试看
date +%s --date "1970-01-01 08:00:00"
说完这个时间的问题,该说说你的脚本了,你的脚本我感觉不是很好。你怎么就能想到用sed去删除一星期以前的记录?这个说实话有点困难。你试着参考一下我的脚本吧。
#!/bin/bash
while :; do
time=`date +"%Y%m%d %H:%M:%S"`
d=`date +%m%d`
N=`ps -ef | grep httpd | wc -l`
[ -d /tmp/httpd/ ] || mkdir /tmp/httpd
echo "$time Now httpd is $N" >> /tmp/httpd/$d.txt
find /tmp/httpd/ -mtime +6 |xargs rm -f
sleep 1
done
0
阿铭老师,针对您的回答我有几个疑问,烦请解答,谢谢
1.apache的并发数就是httpd的进程数吗??
2.如果是的话,我想ps -ef | grep httpd | wc -l 这个应该换成 ps -ef | grep httpd |grep -v grep| wc -l ,不知对不?
3[ -d /tmp/httpd/ ] || mkdir /tmp/httpd
这行是什么意思呢?前半部分可以执行吗?
4加sleep主要起什么作用
阿铭 发表于 2011-12-9 12:52
要想比较date有一种方法就是 date +%s 这种日期的格式是可以比较的,单位是s
貌似是,当前time与1970-0 ...
阿铭老师,针对您的回答我有几个疑问,烦请解答,谢谢
1.apache的并发数就是httpd的进程数吗??
2.如果是的话,我想ps -ef | grep httpd | wc -l 这个应该换成 ps -ef | grep httpd |grep -v grep| wc -l ,不知对不?
3[ -d /tmp/httpd/ ] || mkdir /tmp/httpd
这行是什么意思呢?前半部分可以执行吗?
4加sleep主要起什么作用
编辑回复