《Linux 定时任务 crontab》
crontab 是 Linux 最常用的定时任务工具。本文包含安装与启动、常用表达式、文件位置与排障。(mac 的定时任务见《crontab/launchctl 定时任务(macOS)》)
1 安装(以 Debian 为例)
# 编辑 sources.list(如使用大陆镜像参考《Debian/Ubuntu 镜像源配置》)
apt update
apt-get install cron
# 启动 / 查看状态
/etc/init.d/cron start
/etc/init.d/cron status
# 或使用 service
service cron start
service cron status
2 常用表达式
# 每分钟执行一次(追加时间戳日志)
*/1 * * * * echo "`date`" >> /tmp/xx.log
# 每天 10 点执行脚本
0 10 * * * /opt/auto-sync.sh
# 每周一 9 点
0 9 * * 1 /opt/report.sh
# 每月 1 日 3 点
0 3 1 * * /opt/cleanup.sh
cron 表达式格式:分 时 日 月 星期 命令。
常用写法:
*/n每隔 n 个单位0,15,30,45枚举时间点1-5区间
3 编辑与文件位置
crontab -e # 编辑当前用户任务(默认编辑器可在 ~/.bashrc 设置 VISUAL/EDITOR=vim)
crontab -l # 查看
crontab -r # 删除全部
任务文件实际落地路径:
/var/spool/cron/$USER # Debian 等大多数发行版
# root 用户为 /var/spool/cron/root
人为修改该文件可临时屏蔽某条任务(在目标行前加 #)。
4 排障
- 任务没执行:先确认 cron 服务在运行(
service cron status)。 - 确认语法/时间:在线 cron 校验工具(如 bejson)或 man 5 crontab。
- 脚本没输出:cron 环境变量极少,脚本内尽量使用绝对路径,并在脚本头部
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。 - 看日志:Debian 的
/var/log/syslog或journalctl -u cron。
5 参考资料
- crontab 手册:
man 5 crontab - linux-tools-rst 专栏(crontab)
阅读 —
·
全站 —