1、cron介绍
1.1、什么是cron?
cron是linux系统中以后台进程模式周期性地执行命令或指定程序任务地服务软件。默认安装完linux系统之后,cron服务软件便会启动,服务对应的进程名字为crond。corn服务会定期(默认每分钟检查一次)检查系统中是否有需要执行的任务工作计划。
cron工具对应的crontab命令依赖于crond服务。
1.2、为什么要使用corn定时任务
要不断地对数据进行备份,但是很多时候变天系统业务繁忙,因此数据备份工作只能放到晚上执行,例如:网站数据库数据及用户上传地图片、文件和程序文件等。一般需要每天晚上做一次备份
1.3、不同系统定时任务介绍
1.3.1、windows系统
1.3.2、Linux系统
at(依赖于atd服务)一次性的定时任务。# 不常用
cron定时任务软件依赖于crond服务,通过crontab命令可以配置周期性执行定时任务工作计划。
anacron定时任务软件为非7*24小时开机的服务器准备,不能指定具体执行任务的时间。
2、linux系统定时任务cron(d)
cron是软件名,crond是进程名,crontab命令来设置定时任务的规则。
crond服务除了执行用户定时任务(/var/spool/cron),还会周期性的自动执行系统相关的定时任务,例如:轮询系统日志、备份系统数据、清理系统缓存等。无序人为干预
2.1、用户定时任务计划
crond服务工作时会以每分钟为单位查看在/var/spool/cron路径下以系统用户名命名的定时任务文件,确定是否有需要执行的任务计划。如果有就把任务调到内存中执行,使用crontab命令编辑的文件最终都会以当前用户命名存在于/var/spool/cron路径下。
2.1.1、使用定时任务权限及配置文件说明
/etc/cron.deny # 该文件中所列用户不允许使用crontab命令
/etc/cron.allow # 该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny
/var/spool/cron # 所有用户的cron配置文件都默认存放在此目录
/var/log/cron # 定时任务日志文件,获取故障信息
2.1.2、crontab命令编辑定时任务格式
如root用户建立完定时任务后,会以当前用户名创建一个文件存放在/var/spool/cron目录下,配置文件为/var/spool/cron/root
用crontab命令编写定时任务格式分为6段,前5段位时间设定段,第6段为所要执行的脚本或命令任务段
[root@2022-6-23-centos7-test ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
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
2.1.3、crontab命令编写语法中特殊字符的含义
2.1.4、编写定时任务的要领
1、定时任务后面执行的命令不能有百分号,如果有必须要转义
2、定时任务尽量用脚本
3、执行定时任务尽量用全路径
4、结尾加上 &>/dev/null或者>/dec/null 2>&1
2.1.5、实践定时任务
往/test/1.txt 每分钟追加一个 "double kill"
首先检查命令是否正确,正确后开始编写定时任务
crontab -e
#添加注释
* * * * * echo 'double kill' >> /test/1.txt
tips:
定时任务是非登录shell,不会加载/etc/profile文件里的变量(系统变量和环境变量)
2.2、系统定时任务计划
crond服务还会查看/etc/cron.d目录以及/etc/anacrontab下的文件,通常是每天、每周或每月需要执行的任务。
2.2.1、系统任务的配置文件
/etc/logrotate.conf # 日志轮询切割配置文件
/etc/cron.daily/logrotate # 每天执行日志轮询定时任务配置