avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 计划任务(crontab)
文章

计划任务(crontab)

发表于 2020-12-25 更新于 2026-06- 10
作者 Administrator
12~16 分钟 阅读
  • 什么是计划任务
    • Linux 计划任务的种类:at、cron
    • CentOS Linux 系统上常见的例行性工作
      • 执行日志文件的轮询(logrotate)
      • 日志文件分析logwatch的任务
      • 建立locate的数据库
      • manpage 查询数据库地建立
      • RPM软件日志文件的建立
      • 删除缓存
      • 与网络服务有关的分析操作
      • 其他
  • 仅执行一次一次的计划任务
    • atd的启动与at运行的方式
    • 实际运行单一计划任务
      • at的后台执行功能
      • at任务的管理
      • batch:系统有空时才执行后台任务
  • 循环执行的计划任务
    • 用户的设置
    • 系统的配置文件:/etc/crontab、/etc/cron.d/*
    • 一些注意事项
  • 可唤醒停机期间的工作任务

让自己设计的备份程序可以自动的在系统下面执行,而不需要手动来启动它。
计划任务可分为单一任务和循环任务

什么是计划任务

有的工作是例行的,有的工作是临时发生的。
Linux计划任务是通过crontab与at完成的

Linux 计划任务的种类:at、cron

  • at:可以处理仅执行一次就结束的命令,必须要有atd服务的支持,某些Linux的atd默认不启动,CentOS默认启动
  • crontab:这个命令所设置的任务将会循环地一直执行下去,可循环的时间为分钟、小时、每周、每月或每年等。需要crond服务

CentOS Linux 系统上常见的例行性工作

Linux系统常见的例行性任务有:

执行日志文件的轮询(logrotate)

Linux会主动地将系统所发生地各种信息都记录下来,这就是日志文件。系统会将旧的数据与新地数据分别存放,可以更有效地记录登陆信息,提高读写性能。

日志文件分析logwatch的任务

如果系统发生了软件问题、硬件错误、信息安全问题等,错误信息会被记录到日志文件中,CentOS提供了一个程序[logwatch]来主动分析,所以root总是会收到标题为logwatch的邮件

建立locate的数据库

locate命令通过依据存在的文件名数据库(/var/liv/mlocate)来执行文件名的查询,计划任务会让系统主动地执行updatedb

manpage 查询数据库地建立

man命令查询的数据库,manpage数据库也是通过系统的计划任务来自动执行的

RPM软件日志文件的建立

RPM是一种软件管理的机制。由于系统可能会常常变更软件,为了方便追踪,系统会帮我们将文件名做个排序的记录,也会通过计划任务帮忙完成RPM数据库的重新创建。

删除缓存

某些软件会在运行过程中产生一些缓存,且可能不会被主动删除。系统通过计划任务执行tmpwatch的命令来删除这些缓存

与网络服务有关的分析操作

网站服务器软件(apache等)差生的日志文件,Linux会主动分析软件的日志文件,执行相关网络安全等自动检查

其他

自动执行任务远远不止这些,与安装软件和脚本等诸多因素有关

仅执行一次一次的计划任务

atd的启动与at运行的方式

想要运行at则必须要有负责这类计划任务的服务,即atd
image.png

  • 使用at 命令来产生要运行的任务,并将这个任务以文本文件的方式写入/var/spool/at 目录内,该任务便能等待atd这个服务的使用与执行了
  • 出于安全考虑,并不是所有人都可以执行at计划任务。利用/etc/at.allow与/etc/at.deny这两个文件来实现对at的使用限制
    1.如果/etc/at.allow 存在,则写在该文件的用户才可使用at,没有则不能使用,忽略/etc/at.deny 文件
    2.如果/etc/at.allow 不存在,/etc/at.deny 存在,写在该文件内的用户不能使用at,没有则可以使用
    3.如果/etc/at.allow 与/etc/at.deny 都不存在,则只有root用户可以使用at
    Linux发行版一般默认系统上的所有用户都是可信的,所以系统通常会保留空的/etc/at.deny 文件
    image.png

实际运行单一计划任务

单一计划任务的执行使用at
at [-mldv] TIME
at -c 任务号码
选项与参数:

  • -m:当at的任务完成后,即使没有输出信息,也发email通知使用者该任务已完成
  • -l:at -l 相当于atq,列出系统上面所有使用者的at计划
  • -d:at -d 相当于atrm,可以取消一个在at计划中的任务
  • -v:可以使用比较明显的时间格式列出at计划中的任务列表
  • -c:而已列出后面接的该项任务的实际命令内容
  • TIME:时间格式,可以定义出什么时候要执行at这项任务的时间格式为:
    HH:MM
    HH:MM YYYY-MM-DD
    HH:MM [am][pm] [Month] [Date]
    HH:MM [am][pm] +number [minutes|hours|days|weeks]
    image.png
  • 使用at 时,会进入at shell 的环境来让用户执行任务命令,与PATH变量有关,故最好使用绝对路径来执行命令,避免出问题

at的后台执行功能

at的后台执行功能与bash的nohup类似

  • 脱机继续执行的任务
  • 突发情况导致必须要执行某项任务时

at任务的管理

atq:查询at任务
atrm:删除at 命令

batch:系统有空时才执行后台任务

bash是利用at来执行命令的,只是加入一些控制参数在CPU任务负载小于0.8的时候,才能执行at的工作任务

循环执行的计划任务

循环执行的计划任务是由cron(crond)这个系统服务来控制的,这个系统服务是默认启动的

用户的设置

为了避免安全性的问题,同at一样,可以限制使用crontab的用户账号,使用/etc/cron.allow与/etc/cron.denyr
用法与at类似

  • 当用户使用crontab这个命令来建立计划任务后,该项任务就会被记录到/var/spool/cron中,而是以帐号来作为判断根据的。
  • 不要使用vi直接编辑该文件,因为可能由于输入语法错误,会导致无法执行cron
  • cron执行的每一项任务都会被记录到/var/log/cron 这个日志文件中,所以Linux不知道是否被植入木马时,也可以查找一下/var/log/cron 这个日志文件中
    crontab [-u username] [-l] [-e] [-r]
    选项与参数:
  • -u:只有root才能执行这个任务,亦即帮其他使用者建立/删除 crontab 计划任务
  • -e:编辑crontab 的任务内容
  • -l:查看crontab 的任务内容
  • -r:删除所有的crontab 的任务内容,若仅要删除一项,用-e 来编辑

系统的配置文件:/etc/crontab、/etc/cron.d/*

一些注意事项

可唤醒停机期间的工作任务

Linux
Linux基础
许可协议: 
分享

相关文章

8月 1, 2021

网络的基本概念

掌握最基本的网络概念,TCP/IP与OSI七层协议网络什么是网络发展史网络网络是跨平台的操作系统有很多,需要制定共同遵守的标准才行。该标准由国际组织规范的,系统只要提供可以加入该标准的程序代码,就能够通过这个标准与其他系统进行沟通什么是网络通过网线或者是无线网络技术将设备连接起来,使得数据可以通过网

7月 27, 2021

搭建服务器前的准备工作

具备配置网络服务器的基本技能Linux的功能用Linux搭建服务器需要的能力搭建服务器的基本流程网络服务器成功连接的分析Linux的功能最重要为:开源稳定用Linux搭建服务器需要的能力搭建容易、维护难基本的网络概念进行联网与配置及排错基本的操作系统操作登录控制、账号管理、文本编辑器使用技巧信息安全

12月 28, 2020

X Window 设置介绍

Linux上面的图形用户界面模式称为X Window System,简称为X或X11。X Window System分为X Server 与X Client(C/S架构),是可以跨网络、跨平台的什么是 X Window SystemX Window System 的发展简史总结:什么是 X Wind

下一篇

进程管理与SELinux初探

上一篇

学习shell脚本

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy