鸟哥基础篇之--------例行性工作(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
-
用户控制
用户对应的crontab工作记录在/var/spool/cron/username 里面。
cron执行的每一项工作都会被记录到/var/log/cron日志文件。 -
crontab语法
* * * * * command
分 时 日 月 周
----------------------
* :任意值都接受
,: 如:0 3,6 ,表示3和6两个值
- : 如1-3, 表示1,2,3
/n: 每隔n个单位。
- 配置文件 /etc/crontab
crontab -e是针对用户cron设计的。 配置文件为/etc/crontab.
注意事项: 修改完/etc/crontab之后,需要重启crond服务。
/etc/init.d/crond restart
MAILTO,输入输出信息的传递通知人员,例如可以设置为123@qq.com
PATH= ,输入执行文件的查找路径,一般使用默认的设置就够了。
/etc/cron.hourly文件,每小时执行该目录下的script文件。
- 注意事项
大量工作同频率执行,容易造成系统问题,注意给系统分配不同运行时间。
周与日月不可并存。并存的情况下,在匹配到具体设定指挥会分别都进行执行。
4 可唤醒停机期间的工作任务
针对关机情况下如何进行例行性工作。
anacron工具
功能:以天为单位或者开机后立刻执行,监测停机期间,应该进行但是并没有进行的crontab任务,并将该任务执行一遍,完成后停止。
anacron通过读取timestamps来确定系统的关机时间。
anacron与/etc/anacrontab