深色模式
定时任务 cron
摘要:想让脚本每天凌晨跑、每分钟记一笔?本文带你写一条 crontab,每分钟把当前时间追加到日志,并确认它真的在跑。前提:系统已安装并运行 cron(通常默认开启)。
适用环境
bash
cat /etc/os-release | head -2
systemctl status cron 2>/dev/null || systemctl status crond # 确认服务在跑
# Debian/Ubuntu 叫 cron;CentOS/RHEL 叫 crond
which crontab1
2
3
4
2
3
4
一、理解时间字段
bash
# crontab 一行格式:
# ┌分 ┌时 ┌日 ┌月 ┌周几
# * * * * * 命令
# 示例:
# 0 2 * * * 每天 02:00
# */5 * * * * 每 5 分钟
# * * * * * 每分钟1
2
3
4
5
6
7
2
3
4
5
6
7
二、写一条每分钟追加时间的任务
bash
crontab -e # 编辑当前用户的定时任务
# 在末尾追加一行:
* * * * * date >> /tmp/cron_test.log 2>&1
# 保存退出(vi: Esc 后 :wq)
crontab -l # 列出已配置任务,确认写进去了1
2
3
4
5
2
3
4
5
三、验证它真的在跑
bash
sleep 65 # 等超过一分钟
tail -n 5 /tmp/cron_test.log
# 应看到类似:Fri Oct 9 12:00:01 CST 2026
wc -l /tmp/cron_test.log # 每分钟一行,行数在增长1
2
3
4
2
3
4
验证
- [ ]
crontab -l能看到刚加的规则 - [ ] 等待 1-2 分钟后
/tmp/cron_test.log有新行 - [ ] 清理:
crontab -r删除测试任务(可选)
常见坑
- 环境变量缺失:cron 的 PATH 很窄,命令最好用绝对路径(
/bin/date)。 - 权限/服务没开:任务不跑先
systemctl status crond看服务是否 active。 - 百分号 % 需转义:命令里写
date +%F在 crontab 中%要写成\%。 - 日志看不到输出:没重定向时 stdout 会邮件发给你,加
>> file 2>&1更直观。