You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

磁盘告警Bash脚本定时压缩任务失效求助(Crontab配置问题)

磁盘告警脚本Crontab无效果的排查与修复

核心定时规则错误先修正

你当前的Crontab规则5 * * * *是每小时第5分钟执行一次,并非每5分钟执行一次。要实现每5分钟执行的需求,正确的规则应为:

*/5 * * * * /home/irkhamdayat/coba-bash/warning-disk.sh tes3 coba-warning

注:先给脚本添加执行权限chmod +x /home/irkhamdayat/coba-bash/warning-disk.sh,之后就无需用sh前缀调用,直接写脚本路径即可。


1. 环境变量缺失问题

Crontab执行时的PATH环境变量比用户登录shell窄很多,可能找不到zip命令。解决步骤:

  • 在终端执行which zip,获取zip的绝对路径(比如/usr/bin/zip)
  • 将脚本里的zip替换为这个绝对路径,避免因命令找不到导致执行失败

2. 工作目录不匹配问题

Crontab默认在用户主目录(/home/irkhamdayat)执行脚本,但你的日志文件大概率在脚本所在目录(/home/irkhamdayat/coba-bash)。需要在脚本开头切换到脚本所在目录:

#!/bin/sh
# 切换到脚本所在目录,切换失败则退出
cd "$(dirname "$0")" || exit 1

这样. -i '*.log'才能正确找到目标日志文件。

3. 脚本参数与压缩逻辑错误

原脚本的zip命令语法混乱,且未检查目标目录是否存在:

  • 原命令zip -r $1 $2 . -i '*.log'会错误地将$2(coba-warning)目录和当前目录日志一起压缩到$1.zip
  • 若coba-warning目录不存在,后续mv命令会直接失败

修正后的压缩逻辑:

# 确保目标目录存在,不存在则创建
mkdir -p "$2"
# 仅压缩当前目录下的.log文件到指定压缩包
/usr/bin/zip -r "${1}.zip" . -i '*.log'
# 移动压缩包到目标目录
mv "${1}.zip" "$2/"

4. 脚本逻辑冗余问题

原脚本会遍历每个磁盘分区,只要有一个分区使用率低于60%就执行一次压缩,可能导致重复执行(比如多个分区都低于阈值时,会多次压缩覆盖文件)。建议把压缩逻辑移到循环外,通过标记控制只执行一次:

#!/bin/sh
cd "$(dirname "$0")" || exit 1

# 初始化压缩标记
compress_needed=0

df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  echo "$output"
  used=$(echo "$output" | awk '{print $1}' | sed s/%//g)
  partition=$(echo "$output" | awk '{print $2}')
  if [ "$used" -ge 60 ]; then
    echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)"
  else
    echo "Disk space usage is under threshold for \"$partition\" on $(hostname) at $(date)"
    compress_needed=1
  fi
done

# 仅当有分区满足条件时执行一次压缩
if [ "$compress_needed" -eq 1 ]; then
  mkdir -p "$2"
  /usr/bin/zip -r "${1}.zip" . -i '*.log'
  mv "${1}.zip" "$2/"
fi

5. 查看Crontab执行日志

通过系统日志可以直接定位执行错误:

  • CentOS/RHEL系统:查看/var/log/cron
  • Debian/Ubuntu系统:过滤cron相关日志grep CRON /var/log/syslog

内容的提问来源于stack exchange,提问作者Irkham 11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:01:14