当前位置: 首页 > news >正文

Linux 定时任务全解析:atd 与 crond 的区别及实战案例(含日志备份 + 时间写入)

1. atd 和 crond 两个任务管理程序的区别

  • atd:用于执行一次性的定时任务,即设置任务在某个特定的时间点仅执行一次 ,适合处理不需要重复执行的定时操作,比如在未来某个确切时间执行一个脚本、发送一份文件等场景。

  • crond:用于执行周期性的定时任务,可按照设定的周期(如每分钟、每小时、每天、每周等)重复执行任务,常用来做系统监控、日志备份、定期数据清理或生成等周期性需求。

    对比项atdcrond
    任务执行性质一次性定时任务,任务仅执行一次周期性定时任务,按周期重复执行
    适用场景未来某个特定时间点执行单次操作,如临时定时发文件、跑脚本需周期性执行的任务,如日志备份、系统监控、定期数据处理
    配置方式通过 atatqatrm 等命令配置通过 crontab 命令(编辑用户或系统级定时任务表 )配置
    任务调度逻辑提交任务到队列,到指定时间触发执行依据预设的时间周期规则(分、时、日、月、周等维度组合)循环触发

2. 指定在 2025/08/15 09:00 将时间写入 testmail.txt 文件中

1. 安装 at 软件包
  • at命令需要安装
[root@master ~]# yum  install  at  -y
[root@master ~]# at  -V   # 大写V
at version 3.2.2
2. 启动并配置 atd 服务
  • 启动服务
[root@master ~]# systemctl start  atd
[root@master ~]# systemctl enable  --now  atd  # 设置开机启动
[root@master ~]# systemctl  status  atd  # 查看状态
3.创建定时任务

使用 at 命令实现,步骤如下:

  1. 在终端输入 at 09:00 2025-08-15 ,回车进入 at 任务编辑模式。
  2. 在编辑模式中输入 date > testmail.txt ,然后按 Ctrl + D 保存并退出,这样就设置好了在指定时间将当前时间写入 testmail.txt 文件的任务 。
[root@master ~]# at 9:00 2025-08-15
warning: commands will be executed using /bin/sh
at Fri Aug 15 09:00:00 2025
at> date > testmail.txt 
at> <EOT>
job 11 at Fri Aug 15 09:00:00 2025

3. 指定每天凌晨 4:00 将该时间点之前的日志信息备份到某个目录下(/var/log/messages ),备份后日志文件名显示格式 logfileYY - MM - DD - HH:MM:SS

1. 配置定时任务

crontab 是 Linux 下实现定时任务的工具,/etc/crontab 是系统级任务配置文件。编辑它来设定凌晨 4 点执行备份:

[root@server ~]# vim  /etc/crontab  # 编辑系统计划任务

进入文件后,添加定时任务条目。crontab 的时间规则是 分 时 日 月 周 ,要凌晨 4 点执行,所以分钟设为 0,小时设为 4,即 0 4 * * * 。执行用户是 root,执行的命令是把日志文件按要求备份并命名:

0 4 * * *   root   /bin/cp  /var/log/messages /var/log/logfile`date +\%y-\%m-\%d-\%H:\%M:\%S`

反引号`` 表示将引起的内容识别为命令

在crontab系统中%表示换行,需要增加转义符\

2. 测试验证(确保逻辑可行,提前发现问题)

直接等凌晨 4 点验证不高效,可临时修改 crontab 里的时间规则,比如改成 * * * * * (每分钟执行一次),快速测试任务是否按预期生成备份文件

* * * * *   root   /bin/cp  /var/log/messages /var/log/logfile`date +\%y-\%m-\%d-\%H:\%M:\%S`

在这里插入图片描述

测试完后,改回 0 4 * * * 的时间规则,恢复凌晨 4 点执行的需求 。

http://www.xdnf.cn/news/1140247.html

相关文章:

  • 黑马Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_ts对象笔记
  • 【问题解决】npm包下载速度慢
  • AI与BI的融合挑战:Strategy平台的差异化优势
  • 小白学Python,网络爬虫篇(2)——selenium库
  • (5)颜色的灰度,亮度,对比度,透明度,都啥意思
  • 零基础入门:用按键精灵实现视频自动操作(附完整脚本)
  • Instagram千号矩阵:亚矩阵云手机破解设备指纹检测的终极方案
  • 安全加固Linux内核参数对容器平台的影响评估
  • 《5分钟开发订单微服务!飞算JavaAI实战:IDEA插件安装→空指针修复→K8s部署全流程》
  • 《python语言程序设计》2018版第8章8题编写函数实现二进制转十进制(字符串变整数)!!整数没法进行下标
  • Paimon 动态分桶
  • 深入理解Java中的Map.Entry接口
  • 力扣每日一题--2025.7.17
  • 五分钟学会大数定律【笔记】
  • VOTE:基于轨迹集成投票的视觉-语言-动作模型优化
  • Clip微调系列:《MaPLe: Multi-modal Prompt Learning》
  • [yotroy.cool] 记一次 spring boot 项目宝塔面板部署踩坑
  • BI Agent vs. 传统BI工具:衡石科技视角下的效率与智能跃迁
  • 第2章通用的高并发架构设计——2.5 高并发读场景总结:CQRS
  • 求解偏微分方程的傅里叶积分解
  • RocketMq集群高可用
  • RAG深入了解P1:从RAG类型出发看优化点
  • Python应用指南:使用PyKrige包实现ArcGIS的克里金插值法
  • javaScript中数组常用的函数方法
  • Git仓库核心概念与工作流程详解:从入门到精通
  • JavaScript中的Window对象
  • parallels desktop windows win10无法复制文件无法共享剪切板
  • GLM(General Language Model,通用语言模型)
  • 网络安全威胁下的企业困境与破局技术实践
  • Lotus-基于大模型的查询引擎 -开源学习整理