我正在尝试编写一个脚本来查找过去 24 小时内目录列表中的所有更改(修改、创建、删除),如下所示:
#!/bin/bash
LOGDIR=change_log
FILETYPE=*.php
DIR=www
OUTPUT=$LOGDIR/$(date +%Y-%m-%d).log
function start_check {
for i in `find . -name $DIR -type d`;do
used=0
for j in `find $i -name "${FILETYPE}"`;do
case `find $j -mtime -1` in
'');;
*)
if [ "$used" = "0" ];then
current_directory=`echo $i | cut -d'/' -f2`
display "$current_directory"
fi
echo $j >> $OUTPUT
used=1
;;
esac
done
done
}
function display {
echo "---------------------------------------" >> $OUTPUT;
echo "$@" >> $OUTPUT;
echo "---------------------------------------" >> $OUTPUT;
}
MAIN(){
echo "START CHECKING" > $OUTPUT
start_check;
}
MAIN
问题是,当我在 Ubuntu 中运行该脚本时,找不到任何问题,但是当我在 centos 中运行该脚本时,找不到任何更改,结果为 NULL 。
有什么想法吗?
答案1
好吧,这是一个 bash 脚本,所以我建议你通过逐行执行来调试程序,逐行复制到终端,看看它在哪里失败了,
例如,问题的一个潜在原因是,在 centos 中,由于某种原因它找不到任何文件/文件夹,因此手动执行指令find . -name "www" -type d
并查看它是否返回预期结果。
对程序中的每一条指令重复该过程,由于它是一个小程序,因此它不会花费很长时间。