应封装清理脚本而非直接在crontab写命令链:用绝对路径、加日志、先-test后执行、限制-maxdepth和-type;按用途选crontab入口,配合适当时间策略与验证机制。
用 crontab 实现临时文件定期清理,关键不在命令多长,而在是否可控、可查、不误删。直接往 crontab 里塞 find ... -delete 看似简洁,但出错难定位、环境不一致、没日志、易删错目录——这些才是真实运维中踩坑最多的地方。
把清理逻辑写进独立脚本(比如 /usr/local/bin/clean-tmp.sh),比在 crontab -e 里贴一长串命令更可靠:
#!/bin/bash
/usr/bin/find、/bin/rm、/bin/echo
echo "$(date): start cleanup" >> /var/log/clean-tmp.log
-print 替换 -delete 运行一次,确认要删的文件列表无误-maxdepth 1 防止递归误入子目录;-type f 只处理文件,跳过目录不是所有任务都该用 crontab -e。根据用途选对入口:
crontab -e,格式是 分 时 日 月 周 命令
/tmp、/var/log):编辑 /etc/crontab,必须多写一列用户名(如 root)/etc/cron.daily/,系统会自动每天执行(适合简单、固定频次任务)注意:/etc/crontab 中建议显式设置 PATH,避免因环境变量缺失导致 find 或 free 找不到。
别照搬“每天清 /tmp”,先看它到底存什么、谁在用:
/tmp:多数服务用完即弃,可设为每天凌晨清理,条件用 -mtime +1 或 -atime +1
/var/log:优先交给 logrotate 管理;crontab 可作兜底,清理 *.log.*.gz 中超过 30 天的归档包/data/tmp):按业务生命周期设时限,比如 -mtime +3 表示 3 天未改就清理~/.cache):用 -mtime +14 配合 -empty -delete 清空空目录更安全配置完不等于跑成功。这几步必须做:
/bin/bash --noprofile --norc /usr/local/bin/clean-tmp.sh,模拟 cron 环境systemctl status cron(Debian/Ubuntu)或 systemctl status crond(RHEL/CentOS)grep CRON /var/log/syslog 或 journalctl -u cron -n 50
chmod +x /usr/local/bin/clean-tmp.sh
>>/var/log/clean-tmp.log 2>&1,否则失败无声无息