CentOS Linux安装crontab

crontab是Linux系统下的定时运行程序,非常有用,一般系统都自带。这里系统是CentOS5.7。

如果没有的话要先安装:

yum install vixie-cron crontabs

1、crontab用法
一般格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

常用选项:
-u :指定使用的用户。
-e :编辑该用户的定时任务。
-l :列出该用户的定时任务。
-r :删除该用户的定时任务。
-i :删除该用户定时任务时给予提示。
-s :附加SELinux security context string控制访问。

编辑本用户的定时任务:

crontab -e

2、crontab格式
基本格式:

*  *  *  *  *    command
分  时  日  月  周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

3、crontab文件举例:
10 7 * * 4 /home/test.sh
每周4的7:10执行/home/test.sh脚本。

0 23 1 * * /etc/init.d/httpd restart
每月1日23:00重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18:00至23:00之间每隔30分钟重启lighttpd。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4:45重启lighttpd。

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd。

4、加入开机自动启动:

chkconfig --level 345 crond on

5、
用户执行crontab -e的内容是写在/var/spool/cron/目录内。

6、在/etc下有:
cron.daily
cron.hourly
cron.monthly
cron.weekly
这四个目录,预设了每小时、每天、每周以及每个月的定时任务。可以把要执行的命令写在脚本里仍到相应的目录中。

7、/etc/crontab配置文件:
1)可以直接把定时任务写在该文件内,格式为:

分  时  日  月  周  用户名  命令

例如:
30 2 * * * root /etc/init.d/httpd restart
PS:crontab内的命令要写绝对路径。

2)MAILTO=root是用于crontab执行后发邮件到root的邮箱,路径是/var/spool/mail。
可以把MAILTO后的值改成自己的邮箱。

8、/etc/cron.allow和/etc/cron.deny文件用于限制使用crontab的用户。

9、VPS上执行crontab -e时出错:

/bin/sh: /bin/vi: No such file or directory
crontab: “/bin/vi” exited with status 127

是因为默认编辑器没有设置:

vim /etc/profile

在最后加入:

EDITOR='vim'
export EDITOR

10、crontab日志文件路径:
/var/log/cron

11、crontab设置好后要重启crond服务,使设置生效:

service crond restart

参考资料:
http://kangxiaowei.com/archives/8247.html

PS:crontab基本上就是这些问题了。