Linux定时任务详解:从at到Crond一文搞定

在这里插入图片描述

1. 什么是系统定时任务?

在Linux操作系统的实际使用中,我们可能会经常遇到让系统在特定时间执行某些任务的情况,例如定时采集服务器的状态信息、负载状况,或是定时执行某些任务/脚本以进行远程数据采集等。为了解决这些需求,Linux提供了定时任务服务和软件,如atdCrond,用来定期执行命令或脚本,或指定特定程序任务。

一般情况下,我们安装完操作系统后,这些定时任务调度服务会默认启动。atdCrond会定期(默认每分钟检查一次)查看系统是否有预定的任务工作,如果有,便会根据其预先设定的任务规则自动执行这些任务工作。这个过程类似于我们设置的闹钟,可以一次性执行或者按周期循环。

2. 计划任务的类型

计划任务主要分为一次性计划任务和长期性计划任务:

  • 一次性计划任务:例如计划在今晚12点30分重启你的CentOS服务器。
  • 周期性计划任务:例如每周一的凌晨3点将/data/www目录打包备份为backup.tar.gz

一次性计划任务只执行一次,一般用于临时的工作需求,可以用at命令实现;而长期性计划任务则需要系统能够周期性、规律地执行某些具体的任务,则需要使用系统默认启动的Crond服务。

3. at命令的使用

3.1 at命令的特点

at命令用于指定一个时间执行一个任务,只能执行一次。创建at任务有两种方式:

  • 从文件输入
  • 从控制台输入
3.2 at命令的使用示例

例如,我们需要设置在今晚23:30重启HTTP服务,使用命令如下:

[root@centos ~]# at 23:30
at> systemctl restart httpd
at> <Ctrl+D>
job 3 at Mon Apr 27 23:30:00 2021

此时,我们通过按Ctrl+D组合键来结束编写计划任务。

如果想查看已设置但未执行的一次性计划任务,可以使用at -l命令:

[root@centos ~]# at -l
Job 3 at Mon Apr 27 23:30:00 2021

要删除已设置的任务,可以用atrm 任务序号命令:

[root@centos ~]# atrm 3

也可以通过非交互方式创建计划一次性任务,使用管道符将两个命令连接在一起:

[root@centos ~]# echo "systemctl restart httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2021
3.3 at指定时间的方法
  1. 指定当日的时间:使用hh:mm(小时:分钟)的时间格式。如果时间已过,那么任务会在次日执行。例如:
[root@centos ~]# at 04:00
  1. 使用模糊词语:如midnight(深夜)、noon(中午)、teatime(下午茶时间,一般是下午4点)来指定时间。
[root@centos ~]# at midnight
  1. 12小时计时制:在时间后面加上AM(上午)或PM(下午)。例如:
[root@centos ~]# at 12pm
  1. 指定具体日期:使用month day(月 日)或mm/dd/yy(月/日/年)格式。例如:
[root@centos ~]# at 04:00 03/01/21
  1. 使用相对计时法:指定格式为now + count time-unitsnow表示当前时间,time-units为时间单位(分钟、小时、天、星期)。例如:
[root@centos ~]# at now + 5 minutes
[root@centos ~]# at 04pm + 3 days
  1. **使用today(今天)或tomorrow(明天)来指定完成命令的时间。例如:
[root@centos ~]# at tomorrow

4. Crond服务的使用

Crond服务用于定期执行周期性计划任务。配置Crond任务一般通过编辑crontab文件实现。

4.1 Crond命令的使用示例

例如,设置每周一凌晨3点执行备份任务:

[root@centos ~]# crontab -e

在编辑器中加入以下内容:

0 3 * * 1 tar -zcvf /backup/backup.tar.gz /data/www

以上内容表示每周一的凌晨3点打包/data/www目录到/backup目录下,并命名为backup.tar.gz

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值