文章目录
1. Cron(d)介绍
Cron
是Linux系统中以后台进程模式周期性执行命令或指定程序任务的服务软件。默认情况下,安装完Linux系统之后,Cron
系统软件便会启动,服务对应的进程名字为Crond
,Crond
服务会定期(默认每分钟一次)检查系统中是否有需要执行的定时任务工作计划。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。
注意:
Cron
定时任务执行的最快频率是每分钟一次,因此如果需要以秒为单位执行的计划任务,可以写shell脚本,然后作为守护程序执行。以下是一个每秒钟执行一次任务的脚本:[root@localhost ~]# cat cron.sh while true do echo "I am people." sleep 1 done
Cron的主要任务就是文件数据备份。Cron工具可以很好地帮我们完成需要重复的、周期性地、自动备份等运维工作。
2. Linux系统定时任务Cron(d)
在Linux系统中,Cron
是定时任务的软件名,Crond
是服务进程名,而Crontab
命令是用来设置定时任务规则的配置命令。
Cron
定时任务可以人工划分为用户定时任务计划和系统定时任务计划两类。
2.1 用户定时任务计划
Crond
服务在工作时会以分钟为单位查看/var/spool/cron
路径下以系统用户命名的定时任务文件,确定是否有需要执行的任务计划。如果有,就会把定时任务调度到内存中执行。这部分文件就被称为用户定时任务文件,使用crontab
命令编辑的文件最终会以当前用户名作为文件名存在于/var/spool/cron
路径下。
如果是系统管理员或某个普通用户定期要做的任务工作,例如每隔5分钟与互联网上的时间服务器进行一次时间同步,每天晚上0点备份网站站点数据以及数据库数据,就可以使用crontab
命令配置在/var/spool/cron
路径下。
2.2 系统定时任务计划
Crond
服务在工作时除了查看/var/spool/cron
路径下的定时任务文件外,还会查看/etc/cron.d
目录以及/etc/anacrontab
下的文件内容,里面通常是每天、每周或每月需要执行的任务,如果有需要执行的任务就会执行,系统定时任务的路径通常如下:
[root@localhost ~]# ls -l /etc|grep cron
-rw-------. 1 root root 541 Aug 24 2016 anacrontab
drwxr-xr-x. 2 root root 4096 Mar 8 09:55 cron.d #<==系统定时任务的目录。
drwxr-xr-x. 2 root root 4096 Mar 8 09:55 cron.daily #<==按天轮询配置的目录。
drwxr-xr-x. 2 root root 4096 Mar 8 09:54 cron.hourly #<==按小时轮询配置的目录。
drwxr-xr-x. 2 root root 4096 Mar 8 09:55 cron.monthly #<==按月轮询配置的目录。
drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly #<==按周轮询配置的目录。
特别注意:系统路径下的定时任务配置格式与前文讲解的用户定时任务的配置格式是不同的。
Crond
服务除了执行用户定时任务计划(/var/spool/cron
目录)以外,还会周期性地自动执行与操作系统相关的定时任务工作,例如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无需我们人为干预。示例代码如下:
[test@localhost ~]$ ls -l /var/log/messages* #<==Linux系统的日志被自动轮询,以时间结尾。
-rw-------. 1 root root 470941 9月 7 09:06 /var/log/messages
-rw-------. 1 root root 77868 8月 24 19:35 /var/log/messages-20230825
-rw-------. 1 root root 153778 8月 31 17:27 /var/log/messages-20230901
[test@localhost ~]$ ls -l /var/log/secure*
-rw-------. 1 root root 6969 9月 7 09:07 /var/log/secure
-rw-------. 1 root root 17640 8月 25 08:25 /var/log/secure-20230825
-rw-------. 1 root root 6494 9月 1 08:52 /var/log/secure-20230901
类似于上述的日志轮询工作就是由系统自身来完成的,不需要系统管理员来设置。
2.3 服务设置
systemctl start crond.service # 开启
systemctl stop crond.service # 停止
systemctl status crond.service # 查看状态
systemctl disable crond.service # 关闭自启动
systemctl enable crond.service # 开启自启动
3. 用户定时任务Cron(d)使用说明
3.1 crontab定时任务编辑命令语法
在Linux运维工作中,通常使用crontab
命令编辑定时任务。
- crontab的相关参数及说明
参数 | 含义 | 示例 |
---|---|---|
-l (小写L) |
查看定时任务内容。提示:l为list缩写 | crontab -l |
-e |
编辑定时任务内容,提示:e 为edit缩写 | crontab -e |
-i |
删除定时任务内容,删除前会提示确认 | crontab -ri |
-r |
删除定时任务内容 | crontab -r |
-u |
指定使用的用户执行任务 | crontab -u test -l |
【特别强调】
使用
crontab
命令编辑的文件实际上就是在操作“/var/spool/cron/当前用户名
”这样的文件。-i
、-r
参数在生产中很少使用。
crontab
命令参数的等效命令:
crontab -l <==> cat /var/spool/cron/root
crontab -e <==> vim /var/spool/cron/root
crontab -u root -l <==