博客参考http://www.178linux.com/48784http://www.178linux.com/48902http://www.myhack58.com/Article/48/66/2017/85923.htmplanned任务在:在未来的某个时间点执行任务。batch:系统选择空闲时间执行此处指定的任务。cron:定期运行任务。atat命令用于在指定的时间执行命令。at允许使用一组相当复杂的方法来指定时间。它可以接受当天的hh:mm(小时:分钟)时间规范。如果时间已经过去,它将在第二天执行。当然,也可以用midnight(深夜)、noon(中午)、teatime(喝茶时间,一般是下午4点)等含糊的词来指定时间。用户也可以采用12小时制,即在时间后加上AM(上午)或PM(下午)来表示是上午还是下午。也可以指定命令执行的具体日期,指定格式为monthday(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定的时间之后。以上都是绝对计时方式,其实你也可以使用相对计时方式,这对于安排即将执行的命令非常好。指定格式为:now+counttime-units,now为当前时间,time-units为时间单位,这里可以是minutes(分钟),hours(小时),days(天),weeks(周)。count是时间的长短,可以是几天,也可以是几个小时,等等。另一种计时方法是直接用today(今天)和tomorrow(明天)来指定完成命令的时间。标准使用格式:at[-V][-qqueue][-ffile][-mMlv]timespec...at[-V][-qqueue][-ffile][-mMkv][-ttime]at-cjob[job…]atq[-V][-qqueue]at[-rd]job[job…]atrm[-V]job[job…]batchat-b简化格式:at[option]TIME常用选项:-V:在标准错误上打印版本号。-qqueue:使用指定队列。队列由字母指定,有效的队列指定范围从a到z以及从A到Z。at的默认队列是a,batch的默认队列是b。队列的字母顺序越高,队列运行的级别就越低(运行级别越低)。指定队列“=”为当前正在运行的作业所在的队列保留。如果将作业提交到由大写字母表示的队列,则将其视为提交到批处理。如果atq指定了一个队列,则只显示指定队列中的作业。-m:作业完成时向用户发送电子邮件,即使没有输出。-f/path/from/somefile:从指定文件中读取任务-l:显示要执行的任务列表;相当于atq。-d:删除指定要执行的任务;相当于atrm。-v:对于atq,显示队列中未删除的完整作业,对于其他命令,显示作业执行的时间。显示时间的格式类似于“1997-02-2014:50”,但如果设置了POSIXLY_CORRECT环境变量,则格式类似于“ThuFeb2014:50:001996”。-c:查看具体的job任务注意:job执行命令结果中的标准输出和错误会通过邮件通知相关用户,不会显示输出,依赖atd服务。实现attaskattime格式需要启动TIME:定义HH:MM[YYYY-mm-dd]MMDD[CC]YY,MM/DD/[CC]YY,DD什么时候执行任务。MM.[CC]YY或[CC]YY-MM-DDnoon(中午)、midnight(深夜)、下午茶时间(4pm)今天(today)、明天(tomorrow)now+#{minutes,hours,days,ORweeks}例如:HH:MM02:00在今天的HH:MM如果时间已经过去,则任务将在明天的这个时间执行。HH:MMYYYY-MM-DD04:002016-09-20规定任务在某年某月某日的特定时间执行HH:MM[am|pm][Month][Date]04pmMarch1717:20tomorrowHH:MM[am|pm]+number[minutes|hours|days|weeks]在开始任务前的某个时间点再加几个小时现在+5minutes04pm+3天1.三天后下午5:00执行/bin/ls。2、明天17:00,输出时间在指定文件中。3、定时任务设置好后,我们可以使用atq命令(相当于at-l)查看系统还没有执行的工作任务4、删除已经设置好的任务#atrm4相当于at-d5、16:00命令执行模式交互输入重定向显示已设置的任务内容:指定设置定时器的服务器用户名。参数crontabfile:指定包含要执行的任务的crontab文件。知识扩展Linux下的任务调度分为两大类:系统任务调度和用户任务调度。系统任务调度:系统需要周期性执行的工作,比如将缓存数据写入硬盘,清理日志等。在/etc目录下有一个crontab文件,它是系统任务调度的配置文件。anacronanacron系统任务运行计算机关机时cron不运行的任务。CentOS6之后取消了anacron服务,由crond服务管理。假设电脑没有一直开机,对于笔记本电脑、台式机、工作站等并非一直开机的系统来说,这一点非常重要。对于偶尔关机的服务器很有用配置文件:/etc/anacrontab,负责执行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly中的系统任务。/etc/cron.hourly/Executedby/cron.d/0hourly字段1:如果这些天没有运行这些任务...字段2:重启后等待这么多分钟后运行字段3:任务识别器,标识字段4日志文件中:待执行的任务执行任务时,更新/var/spool/anacron/中文件的时间戳CentOS6使用/etc/cron.daily/tmpwatch定期清除临时文件CentOS7使用systemd-tmpfiles-设置服务实现配置文件:/etc/tmpfiles.d/.conf/run/tmpfiles.d/.conf/usr/lib/tmpfiles/*.conf/usr/lib/tmpfiles.d/tmp.confd/tmp1777rootroot10dd/var/tmp1777rootroot30d命令:systemd-tmpfiles–clean|remove|createconfigfileusertaskusercrontab命令定义,每个用户都有一个专用的cron任务文件:/var/spool/cron/USERNAME使用crontab-e#手动添加/etc/crontab格式的计划内容,查看计划任务crontab-l会生成crontab-e生成的文件,保存在/var/spool/cron/USERNAMEcrontab-r删除计划任务注意:计划任务文件名必须与用户名相同才能执行。at和crontab一次性作业使用at重复作业使用crontabCreate—–attimecrontab-eList—–at-lcrontab-lDetails—–at-cjobnumN/ARemove—–at-djobnumcrontab-rEditN/A—–crontab-e未重定向的输出将邮寄给用户root用户可以修改其他用户的工作任务警告注意:运行结果的标准输出和错误将通过邮件通知相关用户(1)COMMAND>/dev/null(2)COMMAND&>/dev/null对于cron任务,%有特殊用途;如果要在命令中使用%,则需要转义;但是,如果把%放在单引号里,也可以不转义地思考:(1)二级任务如何运行?对于012中的最小值;回声“嗨”;sleep20;done(2)如何每7分钟运行一次任务?睡眠暂停指定的秒数。时间单位可以是s表示秒(默认值)、m表示分钟、h表示小时或d表示天。指定的数字可以是整数或浮点数。注意:如果参数个数超过2个,则总停顿时间为各个参数值??之和。sleepNUMBER[SUFFIX]…SUFFIX:s:second,defaultm:minuteh:hourd:daysleep后的参数可以是浮点数。例如:sleep0.5有时在写一些循环运行的监控脚本时,需要设置时间间隔另外,下面是一个shell进度条脚本,演示了脚本中产生的延迟。(打印进度条)usleep命令是睡眠命令单元的一个微妙应用。例如:usleep10000001,每天2点和12点,备份/etc到/testdir/backup目录下,保存的文件名格式为“etcbak-yyyy-mm-ddHH.tar.xz》在/etc/crontab中添加如下代码2.每周2、4、7备份/var/log/messages文件到/logs目录下,文件名格式为“messages-yyyymmdd”添加将以下代码添加到/etc/crontab3.每两个小时取出当前系统/proc/meminfo文件中S或M开头的信息,追加到/tmp/meminfo.txt文件中在/etc0中添加如下代码/2在/crontabcat/proc/meminfo|grep"^[SM]">>/tmp/meminfo.txt4.工作日,每10分钟检查一次磁盘空间。一旦发现有分区利用率高于80%,执行挂墙报警,在/etc/crontab/101-5./root/bin/CiPanJinKong.sh中加入如下代码5.工作日,执行每小时为用户docker执行一次“ipaddrshow”命令;切换到docker用户使用命令crontab-e进入编辑界面,添加“09-181-5dockeripaddrshow”信息,保存退出6.备份/etc目录到/backup目录4小时,保存文件名格式为“etc-yyyy-mm-dd-HH.tar.xz”;在/etc/crontab文件中添加以下内容:
