cron 简介linux
cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具。经过 cron 脚本能使计划任务按期地在系统后台自动运行。shell
cron 命令数据库
crontab -e – 编辑该用户的 crontab,当指定 crontab 不存在时新建。app
crontab -l – 列出该用户的 crontab。ide
crontab -r – 删除该用户的 crontab。工具
crontab -u<用户名称> – 指定要设定 crontab 的用户名称。url
Linux Crontab 格式spa
表格: Crontab 字段与容许的值 (Linux Crontab)orm
cron 实例blog
1. 特定时间执行
cron 的基本用法是在特定的时间执行一项任务,以下是 6 月 10 上午 8:30 执行 Full backup shell script。 要注意的是时间字段采用的是 24 小时制,若是是下午 8 点,则改写为 20 点
30 08 10 06 * /home/ramesh/full-backup
30 – 第 30 分钟
08 – 早上 8 点
10 – 10 号
06 – 第 6 个月 (6 月)
* – 一周的任何一天
2. 安排多个实例(好比一天执行两次)
下面的增量备份脚本天天执行两次。
天天于 11:00, 16:00 执行,逗号两侧的时间都会执行。
00 11,16 * * * /home/ramesh/bin/incremental-backup
00 – 第 0 分钟 (每小时开时)
11,16 – 早上 11 点与下午 4 点
* – 天天
* – 每月
* – 一周的任何一天
3. 让任务只在特定时间执行(好比仅当工做日时执行)
下面这个例子是天天 9:00-16:00 检查数据库状态(包括周六)
00 09-18 * * * /home/ramesh/bin/check-db-status
00 – 第 0 分钟 (每小时开时)
09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点
* – 天天
* – 每月
* – 一周的任何一天
若是只想工做日执行此操做
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
00 – 第 0 分钟 (每小时开时)
09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点
* – 天天
* – 每月
1-5 – 周一, 周二, 周三, 周四和周五 (工做日)
4. 如何查看 cron 定时任务
查看当前用户定时任务
ramesh@dev-db$ crontab -l
查看 ROOT 用户定时任务,用 root 登入 su-root,再执行 crontab -l
root@dev-db# crontab -l
no crontab for root
查看其它用户定时任务
root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status
5. 如何编辑 cron 定时任务
ramesh@dev-db$ crontab -e
6. 安排每分钟都执行定时任务
理论状况下,没有每分钟都要执行的 shell,但下面这个例子,让咱们更好的了解 crontab
* * * * * 命令
* 表明着全部可能取到的值,除了直接用 * 外,下面的几个例子也较为经常使用
当指定 */5 在分钟字段,表明每五分钟。
当指定 0-10/2 在分钟字段,表明在前十分钟的每两分钟
上面的例子对于其它四个字段一样试用
7. 安排后台每十分钟执行定时任务
*/10 * * * * /home/ramesh/check-disk-space
有一些特殊的例子,能够用关键字替代上述五个字段– reboot, midnight, yearly, hourly
8. 每年的第一分钟执行定时任务(@yearly)
下面的例子将在每年的 1 月 1 日 0:00 执行
@yearly /home/ramesh/red-hat/bin/annual-maintenance
9. 每个月执行定时任务(@mothly)
下面的例子将在每个月 1 日 0:00 执行
@monthly /home/ramesh/suse/bin/tape-backup
10. 天天执行定时任务(@daily)
下面的例子将在天天 0:00 执行
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
11. 每次重启时执行定时任务(@reboot)
@reboot CMD
12. 如何用 mail 关键字禁止/重定向 cron 的邮件
默认状况下,crontab 将向布置定时任务的管理员发送邮件,若是想重定向此用户,添加并更新 MAIL
ramesh@dev-db$ crontab -l
MAIL="ramesh"
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
若是不想任何人接收,则直接将 MAIL 置空
13. 如何系秒每执行一个定时任务
没法安排每秒执行,由于最小处理单元是分钟,另外一方面,没有什么理由让咱们每秒都执行一任务
14. cron 中的 PATH 变量
上面的例子都是用绝对的路径
若是你想用相对的路径,设置环境变量能够在 crontab 增长
ramesh@dev-db$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
@yearly annual-maintenance
*/10 * * * * check-disk-space
15. 从 cron 文件中定义 cron 任务
除了直接编辑外,你也能够先在一个文件中编辑好任务,再导入
ramesh@dev-db$ crontab -l
no crontab for ramesh
$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
ramesh@dev-db$ crontab cron-file.txt
ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
应用时要注意,此操做会删除原有的cron任务