Linux基础入门:⑧ Linux定时(计划)任务

  • 定时(计划)任务概念及分类
  • 用户及系统定时任务
  • 定时任务命令
  • 定时任务规范及标准流程


定时(计划)任务概念及分类

我们明天或多或少都会有一些常规性的工作,例如每周一次的周报,每天的上下班打卡,还有一些突发性的工作,例如临时的加班,会议,需要你准备讲稿等等,还有生活上的,例如每年的爱人的生日,结婚纪念日,等等。上面所有罗列出来的例行或者常规性的工作,都需要你自己记录,不过,我们有了计算机,如果计算机可以主动通知我们是不是就轻松很多,这个时候Linux的定时任务就派上用场了,我们可以定时让系统提醒你,比如周的周五发一份邮件给你提醒你需要写周报了;再例如每年的结婚纪念日前一天发邮件告诉你改准备礼物了。这就是定时(计划)任务:未来的某时间点执行一次某任务或者周期性的运行某个任务,执行结果会通过邮件的
形式发送给用户通过概念我们可以把定时(计划)任务分类两类:
1、定点执行一次某任务:at,batch
2、周期性的运行某任务:crontab

用户及系统定时任务

crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,大家可以使用命令:service crond status(CentOS6)systemctl status crond(CentOS7)进行查看。crond进程定期(每分钟)检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。用户在cron表(也被称为crontab文件)指定了定时任务,crontab也就是我们常见的定时任务设置命令。Linux下的任务调度分为两类,统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件就是系统任务调度的配置文件。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中

定时任务命令

命令

作用

at命令

计划任务,在特定的时间执行某项工作,在特定的时间执行一次

at-V

印出版本编号

at-q

使用指定的伫列(Queue)来储存

at-m

即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者

at-f file

读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用

at-l

列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)

at-d

删除指定 (使用者也可以直接使用 atrm 而不用 at -d)

at-v

列出所有已经完成但尚未删除的指定

相关命令
● at:在特定的时间执行一次性的任务
● atq:列出用户的计划任务,如果是超级用户将列出所有用户的任务,结果的输出格式为:作业号、日期、小时、队列和
用户名
● atrm:根据Job number删除at任务
● batch:在系统负荷允许的情况下执行at任务,换言之,就是在系统空闲的情况下才执行at任务

命令

作用

crontab命令

系统周期性所要执行的工作

crontab-e

编辑任务

crontab-l

列出所有任务

crontab-r

移除所有任务;即删除/var/spool/cron/USERNAME文件

crontab-i

在使用-r选项移除所有任务时提示用户确认

crontab-u user

root用户可为指定用户管理cron任务

定时任务规范及标准流程

crontab标准化工作流程
1、计划任务脚本指定存放位置,便于维护和定期备份
2、写定时任务前必须在前面写注释,包括以下:
添加计划任务的人,添加任务的时间,任务有效期,计划任务脚本的对象,脚本的作用,以及其他需要提醒其他
注意的事项
3、执行的脚本前加上/bin/bash或者/bin/sh,脚本必须使用完整的绝对路径
4、定时任务,需要尽量避免标准输出和标准错误输出 结尾加上 >/dev/null 2>&1
计划任务的标准输出和标准错误输出都会给root用户以邮件,很容易撑满磁盘消耗磁盘inode
5、能用命令完成的也要写在脚本里
6、在指定用户下执行相关的定时任务
7、制定标准的书写规范