1.crond简介
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。
-
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
-
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。
2.crond服务
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs
说明:通常是已经安装
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
//+++++++++++++++++++++++++++++++++++
cron 是linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:chkconfig –level 35 crond on
3.crontab命令:
-
功能说明:设置计时器。
-
语法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
-
参数:
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户的所有定时任务 |
-u<用户名称> | 指定要设定计时器的用户名称。 |
4.编辑定时任务命令:
* * * * * command
分 时 日 月 周 命令
占位符*说明:
符号 | 含义 |
第1个* | 表示一个小时中的第几分钟,1~59,每分钟用*或者 */1表示 |
第2个* | 表示一天中的第几小时,1~23(0表示0点) |
第3个* | 表示一个月中的第几天,日期1~31 |
第4个* | 表示一年中的第几个月份,1~12 |
第5个* | 表示一周中的星期几,0~6(0表示星期天) |
command | 要执行的命令 |
特殊符号说明
特殊符号 | 含义 |
* | 代表任何时间,比如第一个*表示一个小时中的每一分钟都执行一次 |
, | 代表不连续的时间,比如0 8,9,10 * * * command,表示每天的八点九点十点执行命令 |
- | 代表连续的时间范围0 5 * * 1-6 command表示周一到周六的凌晨五点执行命令 |
*/n | 代表每隔多久执行一次,比如*/1 * * * * command表示每隔1分钟执行一次 |
5.使用
方式一: 输入 crontab -e 编辑crontab服务文件,把执行的命令放到这个文件中即可
【1】crontab -e进入到编辑页面,输入命令:*/1 * * * * ll /etc/ >> /tmp/to.txt
【2】异常,定时任务未执行
原因:命令ll换成ls -ahl
方式二:创建一个可执行文件,同时编辑crontab服务文件,执行该文件即可。
【1】task.sh可执行文件(注意:该文件需要赋予可执行权限)
【2】执行该文件
6.实例
45 22 * * * 命令 | 每天22点45分执行命令 |
0 17 * * 1命令 | 在每周1的17点0分执行命令 |
0 5 1,15 * *命令 | 在每月1号15号的凌晨5点0分执行命令 |
0 5 * * 1-5命令 | 在周一到周五的凌晨5点0分执行命令 |
*/10 4 * * *命令 | 每天凌晨4点,每隔10分钟执行一次 |
0 0 1,15 * 1 | 每月1号,15号,每周1的0点0分执行命令, 注意:星期几和几号不要同时出现,因为他们定义的都是天,非常容易混乱 |