设置cron任务
本文来自redhat官方文档
Cron是根据月、天、周、时间的组合设定,周期性的执行特定任务的守护程序。 Cron需要系统处于运行状态。如果系统未运行,则计划任务无法被执行。要使用cron服务, 需安装vixie-cron RPM包,也要确保crond处于运行状态。用rpm -q vixie-cron来 测定此软件包是否安装.用/sbin/service crond status来 测定crond是 否处于运行状态。 cron的主要配置文件在以下的/etc/crontab文件中:包 含如下行
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前 四行是有关设置cron任 务运行的环境变量. SHELL变 量的值指定系统使用的SHELL环 境(该 样例为bash shell),PATH变 量定义了执行命令的路径。Cron的 输出以电子邮件的形式发给MSILTO变 量定义的用户名. 如 果MAILTO变 量定义为空字符串(MAILTO=""), 电子邮件不 会被发送. 执 行命令或脚本时HOME变 量可用来设置家目录。
文 件/etc/crontab中 每行任务的描述格式如下:
minute hour day_of_month month day_of_week command
- minute - 从0 到 59的 整数
- hour - 从0到23的 整数
- day - 从1到31的 整数 (必须是指定月份的有效日期)
- month - 从1到12的 整数 (或如Jan或Feb简写的月份)
- dayofweek - 从0到7的整数,0或7用来描述周日 (或 用Sun或Mon简 写来表示)
- command - 需要执行的命令(可 用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
对 于以上各语句,星 号(*)表 示所有可用的值. 例 如,*在 指代month时 表示每月执行(需要符合其他限制条件)该命令。
整 数间的连字号(-)表 示整数列,例 如1-4意 思是整数1,2,3,4.
指 定数值由逗号分开。如:3,4,6,8表 示这四个指定整数.
符 号“/”指 定步进设置.“/<interger>”表 示步进值。如0-59/2定 义每两分钟执行一次。步进值也可用星号表示。如*/3用 来运行每三个月份运行指定任务.
以“#”开 头的为注释行,不 会被执行。
如 文件/etc/crontab所 示,它 在RUN-PART脚 本中指定系统每小时,每天,每周。每月运行/cron.hourly, /etc/cron.daily, /etc/cron.weekly, 和/etc/cron.monthly中 的文件.这 些目录中的文件为shell脚 本。
如 果一个cron任 务需要定期而不是按小时,天,周,月 来执行,则 需要添加/etc/cron.d目 录. 这 个目录下的所有文件和文件/etc/crontab语 法相同. 查 看样例
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh
除 了root用 户之外的用户可以执行crontab配 置计划任务。所有用户定义的crontab存 储在目录/var/spool/cron下, 任 务会以创建者的身份被执行。要以特定用户创建一个crontab, 先 以该用户登录,执 行命令crontab -e, 系统会启动在VISUAL或 者EDITOR中 指定的的编辑软件编辑crontab. 文 件内容与/etc/crontab格 式相同. 当 更改的crontab需 要保存时,文 件会保存在成如下文件/var/spool/cron/username.文 件名会根据用户名而不同。
cron 服 务会每分钟检查一次/etc/crontab, /etc/cron.d/, 和/var/spool/cron文 件下的变更.如 果发现变化,就 会下载到存储器中.因 此,即 时crontab文 件改变了,程 序也不需要重新启动。