Linux任务计划和周期性任务执行

linux计划任务有两类
  • at:未来某个时间点仅执行一次任务就结束的指令,at指令执行时必须要有atd这个服务支持。
  • crontab:可以以时间单位为分钟,小时,每天,每周,每月,每年等循环执行某任务。
单一任务at介绍:
语法格式:at  -[lfdcq]   TIME

常用选项:
-l 查看作业队列,相当于atq
-f 从某个指定文件文件中读取作业任务,不通过交互式输入。
-d 删除指定的作业任务,相当于atrm。
-c 查看指定作业具体内容。
-q QUEUE指明队列。
TIME时间格式有:
HH:MM 小时:分钟 例如04:00
HH:MM YYYY-MM-DD 小时:分钟 年-月-日 例如15:00 2017-11-25
HH:MM[am|pm] [Month] [Date] 例如:04pm July 30
HH:MM[am|pm] + number [minutes|hours|days|weeks]在某个时间点再加几个时间后执行
例如:now + 5minutes 5分钟后执行
04pm + days三天后下午4点执行

[root@dxlcentOS ~]# at 15:55 2017-11-25 在15点55分执行:切换到tmp目录,执行ls命令
at> cd /tmp
at> ls
at> <EOT>
job 3 at Sat Nov 25 15:55:00 2017
注意:输入结束后按ctrl+d,任务输入结束at> <EOT>,执行结果屏幕不会显示,会以邮件形式发送到邮箱。要是没有mail命令,进行yum -y install mailx安装。

batch命令:系统空闲时才进行的背景任务,他是通过at下达的。

周期性任务计划cron

执行周期性任务要确保crond守护进程在运行。
执行pstree,要是crond运行起来可以看到。
或者执行:~]# systemctl status crond (centos7)
Active: active (running) ... ...
centos6:~]# service crond status
... is running

有时候为了安全起见,可以将不允许某些用户执行周期性任务的用户名添加到/etc/cron.deny文件里面即可。
cron任务分类:分系统cron任务和用户cron任务

系统cron任务:主要用于维护系统自身。
可以手动编辑/etc/crontab文件实现。
系统cron任务格式
 1 SHELL=/bin/bash                      使用哪种shell接口
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin  执行文件搜索路径
  3 MAILTO=root                         以email将数据发给谁
  4 
  5 # For details see man 4 crontabs
  6 
  7 # Example of job definition:
  8 # .---------------- minute (0 - 59)
  9 # |  .------------- hour (0 - 23)
 10 # |  |  .---------- day of month (1 - 31)
 11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 13 # |  |  |  |  |
 14 # *  *  *  *  * user-name  command to be executed
(1) 每一行定义一个周期性任务,共7个字段。
*  *  *  *  * : 定义周期性时间。
user-name : 运行任务的用户身份。
command to be executed:要执行的任务。
(2) 此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
(3) 执行结果以邮件形式发送给MAILTO指定的用户。

用户cron任务:
当用户使用crontab命令来建立周期任务后,这项工就会被记录到/var/spool/cron/USERNAME这个文件中去,
他们以用户名来区分。
crontab [-u username]  [-l|-e|-r]
-u  只要有root用户才能进行这个任务,即为其他用户建立或删除crontab任务。
-l  列出所有任务。
-e  编辑任务。
-r  删除所有crondtab任务,即删除/var/spool/cron/USERNAME文件,若要删除一项,可以用-e选项去编辑。
用户周期性任务定义格式:
*  *  *  *  *   command to be executed
对应意义为:分  时  日  月  周   用户指令
每行定义一个任务,共六个字段。任务执行后的结果以邮件发给用户。
周期任务时间表示法:
分(0-59)  时(0-23)  日(1-31)  月(1-12)  周 (0-7 0和7都代表星期天) 
星号* :表示任何时刻意思
逗号",":b表示时段分隔,指定多个时间点做某事,例如当我要下达的任务是在每天3:00月6:00时,
             0  3,6  *  *  *  COMMAND  时间参数还是5栏
减号“-”:表示一段时间范围,例如我要在8点到12点之间的每小时20分进行一
               项工作, 20  8-12  *  *  *  COMMAND
/n :n代表数字,即是每隔n个时间单位意思,例如每5分钟进行一次。
          */5  *  *  *  *   COMMAND
常见实例:
示例:
    (1) 3 * * * *:每小时执行一次;每小时的第3分钟;
    (2) 3 4 * * 5:每周执行一次;每周5的4点3分;
    (3) 5 6 7 * *:每月执行一次;每月的7号的6点5分;
    (4) 7 8 9 10 *:每年执行一次;每年的10月9号8点7分;
    (5) 9 8 * * 3,7:每周三和周日8点09分;
    (6) 0 8,20 * * 3,7:每周三和周日8点和20
    (7) 0 9-18 * * 1-5:每周一到周五9点到18点
    (8) */5 * * * *:每5分钟执行一次某任务;
        
应用实例:
1.每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
[centos@dxlcentOS ~]$ crontab -e  进入编辑界面
0 */4 * * *  cp -a  /etc /backup/etc-$(date +\%Y\%m\%d\%H\%M)
2.每周2,4,6备份/var/log/messages文件至
/backup/messages_logs/目录中,保存的文件名形如messages-20150402
[centos@dxlcentOS ~]$ crontab -e
0 0 * * 2,4,6  cp -a  /var/log/messages /backup/messages-$(date +\%Y\%m\%d)
3.每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
[centos@dxlcentOS ~]$ crontab -e
0 */2 * * *   cat  /proc/meminfo | grep "^S" >> /stats/memory.txt
4.工作日的工作时间内,每两小时执行一次echo ”howdy”
[centos@dxlcentOS ~]$ crontab -e
0 9-18/2 * * 1-5   echo “howdy”

总结:1.cron周期任务最小时间单位是分钟。
2.定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可。
3.某任务在指定的时间因关机未能执行,下次开机不会自动执行。
4.当修改之前定好的任务或新增循环任务时最好执行一下systemctl restart crond。
5.如果是系统管理使用的循环任务最好写入/etc/crontab。
6.避免系统资源分配不均,周与日月不可以同时并存。

anacron可换醒停机期间的工作任务

cron循环任务设定后,要是服务器因意外关机,那么在停机期间,cron设定的循环任务是不会运行的,当服务器开机后,也不会执行过去到达时间点的循环任务,只能等待下个时间点到来才执行。要想重新执行,anacron就可以解决这个问题。
anacron 是一个程序不是一个服务,当centos进入crontab排程时,anacron 会主动每一小时运行一次。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。...
    孙燕超阅读 1,815评论 0 4
  • 进程相关概念系统进程管理工具任务计划 一、进程相关概念 定义:进程(Process)是运行中的程序的一个副本,是被...
    哈喽别样阅读 556评论 0 0
  • 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (cro...
    Zcclucky阅读 571评论 0 0
  • Linux 系统提供了使用者控制计划任务的命令 :crontab 命令。 一、crond简介 crond是linu...
    happeace阅读 1,767评论 0 53
  • # 任务计划 # at任务 ## 包:at ## at命令:at [option] TIME ## 常用选项: -...
    逢场作戏_6fb9阅读 467评论 0 0