我希望在特定时间内(即最近一小时或一天)没有创建新文件或目录时收到警报
服务器从各种来源获取日志文件,并以以下格式保存:
/u01/log/服务器名称/2021-04/03/file.log
/u01/log/服务器名称/YYYY-MN/DD/file.log
提前感谢您的帮助
贾维德
答案1
这是一个简单的 shell 脚本,用于检查今天的文件是否存在。如果您想检查昨天的文件,可以将命令调整date
为date -d "yesterday" "+%H %M %d %m %Y"
。希望这足以让您进行调整以满足您的要求。
# get the current hour, minute, day, month and year into variables we can use
read HOUR MINUTE DAY MONTH YEAR < <(date "+%H %M %d %m %Y")
# build the file path you're looking for
FILE="/u01/log/server_name/${YEAR}-${MONTH}/${DAY}/file.log"
# Check if the file exists, send an email if it doesn't
if [ ! -f "$FILE" ] ; then
echo "$FILE does not exist" | mail [email protected]
fi
答案2
脚本 1 列出了脚本中声明的目录。脚本 2 中进一步列出了 /u01/log/2021-02 等目录。脚本 2 失败,需要帮助。
脚本 1
/bin/bash #!/bin/bash
arr=(/u01/log/*)
对于 ((i=0; i < ${#arr[@]}; i++)); 执行
ls -ld "${arr[$i]}"
完毕
成功:输出-->
/u01/log/日志服务器1
....
.....
很快..
脚本2
#设置-xv
/bin/bash #!/bin/bash
MON=日期 '+%m'
DAY=日期 '+%d'
YEAR=日期 '+%Y'
YEAR-MON=日期 '+%Y-%m'
arr=(/u01/log/*)
对于 ((i=0; i < ${#arr[@]}; i++)); 执行
文件="${arr[$i]}/ ${YEAR-MON}
"
ls -ld $文件
完毕
错误:list.sh:第 4 行:+%m:未找到命令
list.sh:第 5 行:+%d:未找到命令
list.sh:第 6 行:+%Y:未找到命令
list.sh:第 7 行:YEAR-MON=date:未找到命令
list.sh:第 13 行:MON:未找到命令
一旦解决此问题,如果在 /u01/log/YEAR-MON 中没有创建新文件,它应该会发送电子邮件警报
谢谢 Javeed