cron:
crond是Linux下用来周期性地执行某种任务或等待处理某些事件的一个守护进程,且修改任务或控制文件后不用重启。
当完成操作系统的安装后,默认会安装crond,并自动启动crond进程。crond进程每分钟会定期检查是否有要执行的任务。
其中/etc/cron.allow和/etc/cron.deny文件用来现在cron的使用。这两个文件的格式都是每行一个用户(不允许空格),但root用户不受其限制。
cron.allow、cron.deny规则与at命令控制文件相同
Linux下的任务调度分为两类:系统任务调度和用户任务调度
• 用户任务调度:用户定期要执行的工作。通过crontab命令定制。所有用户定义的crontab文件都保存在/var/sopl/cron目录中(文件名与用户名一致)
• 系统任务调度:系统周期行所要执行的任务。通过/etc/crontab配置
crontab文件格式:
minute hour day month week command
0-59 0-23 1-31 1-12 0-7
另外"*"表示所有可能的值,","表示某个间隔时段,"-"表示某个连续时段,"/n"表示每隔n个单位时间
0 */3 * * * //表示每隔3个小时
30 3 * * 6 //表示每周6的3:30
0 0 1,20 * * //表示每个月的1号和20号
10 5 */5 * * //表示每个月的5、10、15、20、25、30号的5:10
用户任务调度:
crontab [-u user] [file]
crontab [-u user] [-e | -l | -r | -i]
-u user :用来设定某个用户的crontab任务
-e :编辑某个用户的crontab任务(如果是由系统执行的crontab任务可之间编辑/etc/crontab文件)
-l :显示某个用户的crontab任务
-r :删除某个用户的所有crontab任务(从/var/spool/cron目录中删除该用户的crontab文件)
-i :在删除用户的crontab文件时给确认提示
每次编辑完某个用户的cron设置后,cron会自动在/var/spool/cron/目录下生成一个与用户同名的文件记录该用户的cron信息
[root@rhel6 ~]# ll /var/spool/cron/ | grep root
[root@rhel6 ~]# crontab -e //创建crontab任务
* * * * * date >> /tmp/crontab //要求每分钟向/tmp/crontab输入当前时间的信息
注:单纯date的话将看不到任何输出,因为cron把任何输出都mail到root用户了
[root@rhel6 ~]# crontab -l
* * * * * date >> /tmp/crontab
[root@rhel6 ~]# ls /var/spool/cron/ | grep root //自动在/var/spool/cron/目录中生成一个以root为文件名的文件
-rw-------. 1 root root 28 Dec 27 17:15 root //crontab任务于17:15分创建
[root@rhel6 ~]# cat /tmp/crontab
Thu Dec 27 17:16:01 CST 2012 //从17:16分开始每分钟向/tmp/crontab文件输入当前时间的信息
Thu Dec 27 17:17:01 CST 2012
Thu Dec 27 17:18:01 CST 2012
Thu Dec 27 17:19:01 CST 2012
Thu Dec 27 17:20:01 CST 2012
[root@rhel6 ~]# crontab -r //删除用户的所有crontab任务
[root@rhel6 ~]# crontab -l
no crontab for root
[root@rhel6 ~]# ll /var/spool/cron/ | grep root //同时从/var/spool/cron目录中删除该用户的crontab文件
系统任务调度:
可通过直接编辑/etc/crontab文件进行计划任务的管理,该文件与"crontab -e" 的内容几乎完全一模一样。
[root@rhel6 ~]# cat /etc/crontab
SHELL=/bin/bash //执行任务所使用的shell类型
PATH=/sbin:/bin:/usr/sbin:/usr/bin //执行任务所使用的PATH
MAILTO=root //若有标准(错误)输出信息,则mail给root
HOME=/ //shell所在的家目录
# * * * * * user-name command to be executed //以下为计划任务的内容(与crontab -e的格式是一样的)
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时01分以root身份执行/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