我编写了shell脚本,当挂载点达到90%容量时,会删除目录中最旧的日志文件。当我手动运行脚本时,它工作正常,但是当我尝试使用crontab运行时,它似乎无法执行实际的rm命令,但它会执行脚本中的其他所有内容。请参阅下面的crontab和脚本。
0 * * * * /acsmgmt/iselogs/iselogcleanup.sh
#!/bin/bash
df -H | grep /acsmgmt | awk '{ print $4 " " $5 }' | while read output;
do
#!echo $output
usep=$(echo $output | awk '{ print $1 }' | cut -d '%' -f1)
#!echo $usep
if [ $usep -ge 90 ]; then
echo $(date) "Logs cleaned up" >> /tmp/isecleanup.log
rm -v `ls /acsmgmt/iselogs -rt | grep "iselog-" | head -1` >> /tmp/isecleanup.log
else
echo $(date) "No logs to clean up" >> /tmp/isecleanup.log
fi
done
答案 0 :(得分:1)
因此,正如我所怀疑的那样,确实总是确保在PATH
调用的任何脚本中指定正确且完整的cron
变量。
(我自己也犯了同样的错误,即使在编写cron脚本多年之后 - 某些版本的cron允许你为所有脚本指定一个默认的PATH(和其他环境变量),这可能有所帮助,但它还需要仔细维护。)