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

什么是计划任务

有的工作是例行的,有的工作是临时发生的。
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/*

一些注意事项

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


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