第七十一讲——计划任务 本文共有30596个字,关键词: 我们在写完脚本后期望这个脚本在将来的某一时刻执行,这种机制称为任务计划。 一是在未来的某个时间点执行一次某个任务 二是周期性的执行某一任务 任务计划的实现: 当任务只执行一次的时候,我们可以使用命令完成。 #at at 时间 会给出一个at>的提示符,在at提示符下输入需要执行的命令,可以写入多条,使用ctrl+d提交。 at 指定时间的方法有很多 一是指定几点几分(绝对时间)HH:mm 二是以日月年的格式指定 DD.MM.YY now+#一向对时间来进行指定,单位可以为minutes、hours、days、weeks now+3minutes 还可以指定模糊时间: noon 正午 12:00 midnight 午夜 24:00 teatime 喝茶时间 下午16:00 命令的执行结果将会以邮件的形式发送给安排任务的用户。 at –l显示作业的列表,有四列: 第几个作业 执行时间 执行队列(作业队列,只能使用单个字符分类,默认为a) 执行用户 删除一个作业 at –d 作业号(job ID) #batch batch不会要求指定时间,它会在系统空闲时自动执行。 若果所有的用户都可以执行at命令,那么系统就会变得很繁忙,所以我们可能需要对用户进行限制。 /etc/at.deny黑名单 /etc/at.allow白名单 这两个文件不能同时存在,若同时存在只有at.allow生效,如果两个文件都不存在,则默认只有root用户能够使用at命令 如果黑名单存在,但是为空,则所有用户都允许。 如果白名单存在,但是为空,则默认只有root用户允许执行。 周期性的执行某任务: 当我们需要周期性的执行某项任务,必须借助cron服务来实现。 cron:自身是一个不间断运行的服务 如果在执行时间的阶段因关机错过了服务则不会再次执行服务,因此cron有一个补充程序。 anacron:cron的补充,能够实现cron因各种原因在过去时间点该执行而未执行的任务,在恢复正常之后执行一次。 anacron能够监控cron服务,在服务器上anacron是默认不启动的,因为服务器不经常关机。 cron:系统cron和用户cron的格式是不一样的。 系统cron任务:有七个阶段(需指定执行者) /etc/ccrontab 五个段指时间,一个段指用户,一个段指任务 系统cron格式:分钟 小时 天 月 周 用户 任务 用户cron任务:有六个阶段(五个段指时间,一个段指任务) /var/spool/cron/USERNAME cron中的每一个字段都使用空格隔开 用户cron格式:分钟 小时 天 月 周 用户 任务 每一段时间的取值范围都是特定的 分钟 0-59 小时0-23 天1-31 月1-12 周0-7 0/7都表示周日 时间的同配表示: * 所有对应有效的取值 , 离散的时间点例如 10,40 * * * *每小时的10分、40分执行一次,即为每半小时任务。 ‘-‘ 连续的时间点 1012 * * 1-5 每周一至周五的12:10执行一次 ‘/’ 表示对应取值范围“每” */3* * * * 每隔三分钟执行一次 0 */2 * * *每两小时执行一次 cron的执行结果将会以邮件的形式发送给管理员,如果不想接受邮件,可以将所有的结果送入/dev/null cron的环境变量:cron中执行的命令也会到PATH环境变量中去寻找,因此应在脚本中声明PATH环境变量,如果用户么有登陆则不能以用户的环境变量去执行,cron的环境变量很简单/bin:/sbin:/usr/bin:/usr/sbin,这样我们的计划任务才能够正常的执行,当用户在线时计划任务是正常执行的,但是当用户登出后就不一定了,因此我们在cron中的命令要写绝对路径,或者先声明环境变量。 我们很多的脚本中也是需要环境变量的,因此我们在脚本中需要先定义好环境变量。 cron中进行全局声明: export PATH=/bin:/sbin:/usr/sbin:/usr/bin等等 对于系统而言,和用户没有关系,因此可以直接定义PATH PATH=* MAILTO=username 邮件接受者 SHELL=/bin/bash 以哪一个shell作为命令解释器。 run-parts 由红帽系统提供的功能,可以执行一个目录中的脚本,按顺序执行,如果我们想要将某一个脚本提前执行,在脚本名称前加上数字即可。 如果有用户定义cron,则在/var/spool/cron下有一个与用户名同名的文件。 用户计划任务的管理,周期性执行的任务。 使用crontab命令 crontab –l 列出当前用户的cron任务 -e 编辑(能够自动检查语法错误) -r 移除所有任务(删除cron文件) -u USERNAME,跟上其他三个选项,管理其他用户的cron(仅限管理员) anacron,作为cron的补充,即当cron中的任务由于意外没能正常执行,当系统恢复之后执行此前没有执行的cron任务,nancron只是作为cron的补充,无法替代cron。 anacron:/etc/anacron,一共有四个段,前两个段指的是时间,第三个段是注释信息,第四个段为需要执行的任务。 第一字段:指这个任务过去有*天没有执行(最小单位为天) 第二字段:当开机后的第几分钟执行此计划任务 我们需要知道的是,无论是cron还是anacron,我们需要确保cron服务一定要执行。 #service cron status #service anacron status 一般来说,nancron服务在服务器上是默认关闭的,因为服务器大多是7*24小时在线的,需要用到anacron的是笔记本一类需要关机的机器。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-02-09 评论 2706 次浏览