Crontab 构建 Linux 自动化巡检流的核心是可执行、可感知、可响应:脚本需自带环境与错误兜底,Crontab 配置须避坑(如 PATH、% 转义),结果须闭环(日志归档、邮件摘要、阈值告警),最终形成多脚本协同的轻量级巡检体系。
用 Crontab 构建 Linux 自动化巡检流,核心不是堆功能,而是让检查可执行、结果可感知、异常可响应。它不依赖复杂平台,靠的是脚本逻辑清晰、时间调度准确、执行环境稳定。
脚本必须自带环境、路径和错误兜底,不能依赖交互式终端或当前 shell 环境:
#!/bin/bash
/usr/bin/sqlplus而不是sqlplus
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
set -e让脚本在任意命令失败时立即退出,避免“带病执行”echo "[INFO] $(date): 开始检查磁盘使用率" >> $LOG_FILE
很多巡检“看似在跑”,实则静默失败,问题常出在调度层:
crontab -e编辑,别直接改/var/spool/cron/root——权限或格式错会导致整个 crontab 失效%符号(如date +%Y%m%d)必须转义为%,否则 crontab 会截断/usr/bin:/bin),脚本里调用的命令若不在其中,需在 crontab 顶部补全:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
只生成日志不算完成,得让信息真正被看到、被处理:
check_20260609.log,方便归档比对tail -n 20 $LOG_FILE | mail -s "DB巡检摘要-$(date +%m%d)" [email protected]发精简版邮件,避免整份日志刷屏echo "ALERT: 表空间告警" | mail -s "CRITICAL" [email protected]
find /opt/dba/logs -name "check_*.log" -mtime +30 -delete防磁盘占满一个稳定可用的巡检流,可以自然扩展为多维度协同:
# v1.2, by DBA-Team, 2026-06-05,便于后续维护交接crontab -l | grep check核对任务是否仍在生效,避免误删或覆盖