发布时间:2014-09-05 17:42:22作者:知识屋
cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具。通过 cron 脚本能使计划任务定期地在系统后台自动运行。
表格: Crontab 字段与允许的值 (Linux Crontab)
字段 | 描述 | 允许的值 |
---|---|---|
分钟 | 一小时的第几分 | 0-59 |
小时 | 一天的第几小时 | 0-23 |
日期 | 一个月的的第几天 | 1-31 |
月份 | 一年的第几个月 | 1-12 |
周几 | 一周的第几天 | 0-6 |
命令 | 命令 | 可以被执行的任何命令 |
cron 的基本用法是在特定的时间执行一项任务,如下是 6 月 10 上午 8:30 执行 Full backup shell script。 要注意的是时间字段采用的是 24 小时制,如果是下午 8 点,则改写为 20 点
30 08 10 06 * /home/ramesh/full-backup30 – 第 30 分钟08 – 早上 8 点10 – 10 号06 – 第 6 个月 (6 月)* – 一周的任何一天
下面的增量备份脚本每天执行两次。
每天于 11:00, 16:00 执行,逗号两侧的时间都会执行。
00 11,16 * * * /home/ramesh/bin/incremental-backup00 – 第 0 分钟 (每小时开时)11,16 – 早上 11 点与下午 4 点* – 每天* – 每个月* – 一周的任何一天
下面这个例子是每天 9:00-16:00 检查数据库状态(包括周六)
00 09-18 * * * /home/ramesh/bin/check-db-status00 – 第 0 分钟 (每小时开时)09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点* – 每天* – 每个月* – 一周的任何一天
如果只想工作日执行此操作
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status00 – 第 0 分钟 (每小时开时)09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点* – 每天* – 每个月1-5 – 周一, 周二, 周三, 周四和周五 (工作日)
查看当前用户定时任务
ramesh@dev-db$ crontab -l
查看 ROOT 用户定时任务,用 root 登入 su-root,再执行 crontab -l
root@dev-db# crontab -lno crontab for root
查看其它用户定时任务
root@dev-db# crontab -u sathiya -l@monthly /home/sathiya/monthly-backup00 09-18 * * * /home/sathiya/check-db-status
ramesh@dev-db$ crontab -e
理论情况下,没有每分钟都要执行的 shell,但下面这个例子,让我们更好的了解 crontab
* * * * * 命令
* 代表着所有可能取到的值,除了直接用 * 外,下面的几个例子也较为常用
当指定 */5 在分钟字段,代表每五分钟。当指定 0-10/2 在分钟字段,代表在前十分钟的每两分钟上面的例子对于其它四个字段同样试用
*/10 * * * * /home/ramesh/check-disk-space
有一些特殊的例子,可以用关键字替代上述五个字段– reboot, midnight, yearly, hourly
Table: Cron special keywords and its meaning
Keyword | Equivalent |
---|---|
@yearly | 0 0 1 1 * |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
@reboot | 重启时运行 |
下面的例子将在每一年的 1 月 1 日 0:00 执行
@yearly /home/ramesh/red-hat/bin/annual-maintenance
下面的例子将在每月 1 日 0:00 执行
@monthly /home/ramesh/suse/bin/tape-backup
下面的例子将在每天 0:00 执行
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
@reboot CMD
默认情况下,crontab 将向布置定时任务的管理员发送邮件,如果想重定向此用户,添加并更新 MAIL
ramesh@dev-db$ crontab -lMAIL="ramesh"@yearly /home/ramesh/annual-maintenance*/10 * * * * /home/ramesh/check-disk-space
如果不想任何人接收,则直接将 MAIL 置空
无法安排每秒执行,因为最小处理单元是分钟,另一方面,没有什么理由让我们每秒都执行一任务
上面的例子都是用绝对的路径
如果你想用相对的路径,设置环境变量可以在 crontab 增加
ramesh@dev-db$ crontab -lPATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh@yearly annual-maintenance*/10 * * * * check-disk-space
除了直接编辑外,你也可以先在一个文件中编辑好任务,再导入
ramesh@dev-db$ crontab -lno crontab for ramesh$ cat cron-file.txt@yearly /home/ramesh/annual-maintenance*/10 * * * * /home/ramesh/check-disk-spaceramesh@dev-db$ crontab cron-file.txtramesh@dev-db$ crontab -l@yearly /home/ramesh/annual-maintenance*/10 * * * * /home/ramesh/check-disk-space
应用时要注意,此操作会删除原有的cron任务
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能