鸟哥基础篇之--------例行性工作(crontab)

1 什么是例行性工作

如,周报,周会等定期的。
如果计算机能够主动通知,则轻松方便很多。这就产生了定时任务。


不由得 让人想到相关的几点内容,时钟周期,定时器,和AI。特此总结了一个图片,如下,不由得感慨,当年计算机的诞生其中关键一点时钟周期的思想真是优秀。让死的一行一行的文字内容成了活的可执行的,crontab让一项一项功能成了活的,小到闹铃大到机械化的工业制造,而如今津津乐道的AI,也是在此基础上进行深度学习或者训练模型,进行功能的自我迭代和数据模拟建模分析等,以达到更高的要求。一切的思想是有共性的。向前辈看齐。
在这里插入图片描述

1.1 Linux工作调度的种类

例行性:crontab。对应的服务是crond。定时器。

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

突发性:at。对应的服务是atd。处理仅执行一次的任务。
通常设置这些内容不要忘了,开机自启:
chkconfig atd/* on /etc/init.d/atd start/stop/restart

1.2 常见的例行性工作

– 进行日志文件的轮替,log rotate
– 日志文件分析logwatch的任务
– 新增locate的数据库
– whatis数据库的建立
– RPM软技日志文件的新建
– 删除临时文件
– 与网络服务有关的分析行为

2 仅执行一次的工作调度

at与atd服务

atd服务对应/etc/init.d/atd status ,该服务的开启与状态。

使用:
at [-mldv] TIME
at -c 执行任务
最重要的地方在于时间的指定。
例子:

at 23:00 2020-02-27
at>/bin/sync
at>/bin/sync       //命令的执行,尽量使用绝对路径
at>/sbin/shutdown -h now
at><EOF>   //ctrl + d 进入到退出模式

综上,at功能,指定命令执行时间, 后台执行。

at的特性

后台执行,脱机继续工作
at在工作调度的使用上,系统会将该项at工作独立出系统bash环境,直接交给系统atd程序来接管,因此,执行了at的工作可以立刻脱机,剩下的工作完全交给linux管理。

at管理

atq   //查询at工作
atrm  //删除

利用batch指定较空闲执行:
batch是利用at来进行命令的执行。 其中一个重要特性:

会在CPU工作负载小于0.8的时候,才进行执行工作任务。

如果系统极其繁忙的情况下,还要额外的at,不合理。所以才有batch这个命令。
batch依旧是使用atq和atrm的命令进行管理任务。

3 循环执行的例行性工作调度


crond系统服务进行控制

crontab命令

crontab -h
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging
  1. 用户控制
    用户对应的crontab工作记录在/var/spool/cron/username 里面。
    cron执行的每一项工作都会被记录到/var/log/cron日志文件。

  2. crontab语法

*   *   *   *     *   command
分  时  日   月    周

----------------------
* :任意值都接受
,: 如:0  3,6      ,表示3和6两个值
- :  如1-3, 表示1,2,3 
/n:  每隔n个单位。  
  1. 配置文件 /etc/crontab

crontab -e是针对用户cron设计的。 配置文件为/etc/crontab.
注意事项: 修改完/etc/crontab之后,需要重启crond服务。
/etc/init.d/crond restart

MAILTO,输入输出信息的传递通知人员,例如可以设置为123@qq.com

PATH= ,输入执行文件的查找路径,一般使用默认的设置就够了。

/etc/cron.hourly文件,每小时执行该目录下的script文件。

  1. 注意事项
    大量工作同频率执行,容易造成系统问题,注意给系统分配不同运行时间。

周与日月不可并存。并存的情况下,在匹配到具体设定指挥会分别都进行执行。

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

针对关机情况下如何进行例行性工作。

anacron工具

功能:以天为单位或者开机后立刻执行,监测停机期间,应该进行但是并没有进行的crontab任务,并将该任务执行一遍,完成后停止。

anacron通过读取timestamps来确定系统的关机时间。

anacron与/etc/anacrontab