我能弄明白!
我必须转换
2018年5月4日:21:26:39
到UNIX时间戳。这是通过以下方法实现的
日期
date -d "YEAR-MONTH-DAY HR:M:S" "+%S"
然后再做一个
延迟60分钟的UNIX时间戳
date -d "60 min ago" "+%s"
在if条件筛选器中
UNIX时间戳大于时间戳后60分钟(-gt)的所有日志项
使用当前设置:
cPanel+Apache 2.4
日志记录格式:
/主页/$用户/公共\u html\u cron\u日志/$天/$小时-$分钟-[获取|帖子]。日志
Like/home/$USER/public\u html\u cron\u logs/05-05-2018/14-53-GET。日志
#!/bin/bash
LOG_DIR="public_html_cron_logs"
DAY=`date +"%d-%m-%Y"`
HOUR=`date "+%H-%M"`
GET_LOG="GET.log"
POST_LOG="POST.log"
if [ ! -d /home/$USER/$LOG_DIR/$DAY ]; then
mkdir /home/$USER/$LOG_DIR/$DAY;
fi
CREATE_DIR=/home/$USER/$LOG_DIR/$DAY
GET_LOG=$CREATE_DIR/$HOUR-$GET_LOG
POST_LOG=$CREATE_DIR/$HOUR-$POST_LOG
while read line; do
DATE_LOG=`echo $line | awk '{print $4}'`; DATE_LOG=${DATE_LOG:1}
MONTH_VERB=`echo $DATE_LOG | awk -F '[/:]' '{print $2}'`
if [ "$MONTH_VERB" = "January" ]; then
MONTH=01
elif [ "$MONTH_VERB" = "February" ]; then
MONTH=02
elif [ "$MONTH_VERB" = "March" ]; then
MONTH=03
elif [ "$MONTH_VERB" = "April" ]; then
MONTH=04
elif [ "$MONTH_VERB" = "May" ]; then
MONTH=05
elif [ "$MONTH_VERB" = "June" ]; then
MONTH=06
elif [ "$MONTH_VERB" = "July" ]; then
MONTH=07
elif [ "$MONTH_VERB" = "August" ]; then
MONTH=08
elif [ "$MONTH_VERB" = "September" ]; then
MONTH=09
elif [ "$MONTH_VERB" = "October" ]; then
MONTH=10
elif [ "$MONTH_VERB" = "November" ]; then
MONTH=11
elif [ "$MONTH_VERB" = "December" ]; then
MONTH=12
fi
UNIX_DATE=`echo $DATE_LOG | awk -v AWK_MONTH="$MONTH" -F '[/:]' '{print $3"-"AWK_MONTH"-"$1" "$4":"$5":"$6}'`
UNIX_TIMESTAMP_LOG=`date -d "$UNIX_DATE" "+%s"`
UNIX_TIMESTAMP_LAST_HOUR=`date -d '60 min ago' "+%s"`
if [ $UNIX_TIMESTAMP_LOG -gt $UNIX_TIMESTAMP_LAST_HOUR ]; then
if [[ $line = *"GET"* ]]; then
echo $line | awk '{print $1}' >> $GET_LOG
else
echo $line | awk '{print $1}' >> $POST_LOG
fi
fi
done < ~/access-logs/ENTER_YOUR_DOMAIN_LOG_FILE_HERE