繁体   English   中英

Crontab无法在脚本中执行命令

[英]Crontab can't execute command in script

我已经编写了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

因此,正如我所怀疑的,答案的确是要始终确保在cron调用的任何脚本中指定正确且完整的PATH变量。

(即使多年编写cron脚本,我自己也会犯同样的错误-cron的某些版本允许您为所有脚本指定默认的PATH(和其他环境变量),这会有所帮助,但也需要谨慎保养。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM