crontab是Linux/Unix系统中用于设置周期性执行任务的工具。以下是设置自定义时间任务的详细指南:
crontab -e # 编辑当前用户的crontab文件
如果是第一次使用,系统会让你选择默认编辑器(推荐选择nano或vim)。
crontab的时间格式由5个字段组成,后跟要执行的命令:
* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └── 星期几 (0 - 6) (0表示星期日)
│ │ │ └──── 月份 (1 - 12)
│ │ └────── 日 (1 - 31)
│ └──────── 小时 (0 - 23)
└────────── 分钟 (0 - 59)
0 2 * * * /path/to/command
30 8 * * 1 /path/to/command
0 12 1 * * /path/to/command
*/5 * * * * /path/to/command
0 9-17 * * 1-5 /path/to/command
0 0 1,15 * * /path/to/command
*/30 * * * * /path/to/command
0 10,16 * * 1-5 /path/to/command
crontab还支持一些特殊字符串来简化常见的时间设置:
@reboot
- 系统启动时运行@yearly
或 @annually
- 每年1月1日午夜运行@monthly
- 每月第1天午夜运行@weekly
- 每周日午夜运行@daily
或 @midnight
- 每天午夜运行@hourly
- 每小时开始时运行示例:
@daily /path/to/command # 每天午夜执行
在crontab中,环境变量可能与你的shell环境不同。建议:
bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
默认情况下,cron任务的输出会通过邮件发送给用户。你可以:
bash
0 * * * * /path/to/command > /path/to/logfile 2>&1
bash
0 * * * * /path/to/command > /dev/null 2>&1
crontab -l
grep CRON /var/log/syslog
grep CRON /var/log/cron
通过以上方法,你可以灵活地设置各种自定义时间周期的定时任务。