13Linux系统定时任务Cron(d)


1. Cron(d)介绍

Cron是Linux系统中以后台进程模式周期性执行命令或指定程序任务的服务软件。默认情况下,安装完Linux系统之后,Cron系统软件便会启动,服务对应的进程名字为CrondCrond服务会定期(默认每分钟一次)检查系统中是否有需要执行的定时任务工作计划。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。

注意: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 97 09:06 /var/log/messages
-rw-------. 1 root root  77868 824 19:35 /var/log/messages-20230825
-rw-------. 1 root root 153778 831 17:27 /var/log/messages-20230901
[test@localhost ~]$ ls -l /var/log/secure*
-rw-------. 1 root root  6969 97 09:07 /var/log/secure
-rw-------. 1 root root 17640 825 08:25 /var/log/secure-20230825
-rw-------. 1 root root  6494 91 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  <==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值