什么是crond

crond是一个服务,是定时任务的守护进程

定时任务的作用

1.系统级别的定时任务

  • 临时文件清理
  • 系统信息采集
  • 日志文件切割

2.用户级别的定时任务

  • 定时向互联网同步时间
  • 定时备份系统配置文件
  • 定时备份数据库的数据

定时任务语法

[root@cyr ~]# vim /etc/crontab 
# 定时任务,支持bash命令
SHELL=/bin/bash
# 定时任务只支持直接写以下目录中的命令(建议:定时任务中的命令全部使用绝对路径)
PATH=/sbin:/bin:/usr/sbin:/usr/bin (建议:定时任务能不用命令就不用命令,最好写脚本)
# 定时任务执行的内容,如果有输出,或者有报错,则通过邮件发给root用户
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

语法:
写定时任务,要先写五颗星,需要什么时间再编辑
* * * * * 用户 ls
分 时 日 月 周

切记:定时任务最小单位是分钟,无法精确到秒级

# * 表示任意的(分,时,日,月,周)时间都执行
# - 表示一个时间范围段,如5-7点
# ,表示分隔时段,如6,0,4表示周六,周日,周四
# /1 表示分割n单位时间,如*/10 没10分钟

定时任务相关命令

crontab
-l:list 列出当前定时任务的列表
-e:edit 编辑定时任务 vim /var/spool/cron/root
-r:remove 删除定时任务(删除全部定时任务)
-u:user 指定定时任务的用户


# 每天凌晨两点,执行一次ls命令
00 02 * * * ls
# 每个月的1日凌晨两点,执行一次ls命令
00 02 1 * * ls
# 每年的2月14日凌晨两点,执行一次ls命令
00 02 14 2 * ls
# 每周日凌晨两点,执行一次ls命令
00 02 * * 7 ls
# 每年的六月的每周五凌晨两点,执行一次ls命令
00 02 * 6 5 ls
# 每年的每个月的14日恰巧又是周日,凌晨两点执行一次ls命令
00 02 14 * 7 ls
# 每年的2月14日恰巧又是周日凌晨两点,执行一次ls命令
00 02 14 2 7 ls
# 每天的凌晨两点每隔十分钟,执行一次ls命令
*/10 02 * * * ls
# 每分钟执行一次ls命令
* * * * * ls
# 每年2月14日的凌晨,执行一次ls命令
00 00 14 2 * ls
# 每隔五分钟,执行一次ls命令
*/5 * * * * ls
# 每年的1月5月和8月的每天凌晨两点,执行一次ls命令
00 02 * 1,5,8 * ls
# 每月的1到8日凌晨两点,执行一次ls命令
00 02 1-8 * * ls
# 每天晚上的21点,执行一次ls命令
0 21 * * * ls
# 每月的1月,10日和22日的凌晨4时45分,执行一次ls命令
45 4 1,10,22 * * ls
# 每月的1日到10日4时45分,执行一次ls命令
45 4 1-10 * * ls
# 每个月的每隔2天的8点到11点的03分和15分,执行一次ls命令
3,15 8-11 */2 * * ls
# 每天的1到7点和23到00点的整点,执行一次ls命令
0 23-7/1 * * * ls
# 每月的周一到周五21点15分,执行一次ls命令
15 21 * * 1-5 ls

定时任务实战

## 时间同步定时任务
1):需要下载时间同步命令
[root@localhost <sub>]# yum install -y ntpdate
2):要先测试命令是否可以在命令行执行成功
[root@localhost </sub>]# ntpdate time1.aliyun.com
10 May 15:14:21 ntpdate[1649]: step time server 203.107.6.88 offset -28799.032754 sec
3):编辑定时任务
[root@localhost <sub>]# crontab -e
4):写入规则(命令复制刚才执行成功的命令)
* * * * * ntpdate time1.aliyun.com
5):查找该命令的绝对路径
[root@localhost </sub>]# which ntpdate
/usr/sbin/ntpdate
6):完善规则中的绝对路径
* * * * * /usr/sbin/ntpdate time1.aliyun.com
7):根据规定的时间来进行定时任务编写
(建议最开始定时任务每分钟执行一次,写完之后查看日志确认无误后,再根据规定的时间编写)
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com
8):查看命令是否有输出内容,如果有则扔给黑洞(建议写定时任务都加上&>/dev/null)
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
9):加上规范注释
# Usage:Sync Date By:cyr Date:2022/15/10
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
10):查看定时任务日志
[root@localhost <sub>]# tail -f /var/log/cron
May 10 16:05:01 localhost CROND[1720]: (root) CMD (/usr/sbin/ntpdate time1.aliyun.com &>/dev/null)
May 10 16:10:01 localhost CROND[1727]: (root) CMD (/usr/sbin/ntpdate time1.aliyun.com &>/dev/null)
[root@localhost </sub>]# crontab -l
# Usage:Sync Date By:cyr Date:2022/15/10
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null