例行性任务(crontab)

系统经常会主动执行一些任务,这些任务可能又分为“单一”工作与“循环”工作。

1、什么是例行性工作

有的工作是例行性的,有的工作是临时发生的。

如果计算机系统能够主动通知我某些事情的话,那不就轻松很多!

1.1、Linux工作调度的种类:at,cron

两种工作调度的方式:

一种是例行性的,就是每隔一定的周期要来办的事项;

一种是突发性的,就是这次做完以后就没有的那一种。

at:at是个可以处理仅执行一次就结束调度的命令,不过要执行at时,必须要有atd这个服务的支持才行;

crontab:crontab这个命令所设置的工作将会循环一直执行下去。可循环的时间为分钟、小时、每周、每月或每年等。crontab处理可以使用命令执行外,也可编辑/etc/crontab来支持。至于让crontab可以生效的服务则是crond这个服务。

1.2、Linux上常见的例行性工作

基本上Linux系统常见的例行性任务有:

进行日志文件的轮替(log rotate);

日志文件分析logwatch的任务;

新建locate的数据库;

whatis数据库的建立;

RPM软件日志文件的新建;

删除临时文件;

与网络服务有关的分析行为;



2、仅执行一次的工作调度

单一工作调度的运作,at这个命令。

2.1、atd的启动与at运行方式

atd这个服务调度at

service atd start

at的运行方式:

事实上,我们使用at这个命令来生成所要运行的工作,并将这个工作以文本的方式写入/var/spool/at目录内,该工作便能等待atd这个服务的取用并执行了。

不过,并不是所有的人都可以进行at工作调度。所以,除非是你认可的账户,否则先不要让他们使用at。

我们可以利用/etc/at.allow和/etc/at.deny这两个文件来进行at的使用限制。

2.2、实际运行单一工作调度

at命令语法

at这个命令最重要的地方在于时间的指定, now + x minutes也是不错的方法。

事实上,当我们使用at时会进入一个at shell的环境来让用户执行工作命令,此时,建议你最好使用绝对路径来执行你的命令。

at 的执行与终端机环境无关,而所有的standard output/standard error output都会传送到执行者的mailbox里面去,不是输出在屏幕上。

还要注意的是,at执行过后并没有任何输出信息,如果你想要知道命令执行没有,可以发送一封邮件告知你。

at还有一个很棒的优点,那就是“后台执行”的功能!

脱机继续工作的任务,由于在 at 工作调度的使用上,系统会将该项at工作独立出你的bash环境中,直接交给系统的atd程序来接管,因此,当你执行了at的工作之后就可以立刻脱机了,剩下的工作就完全交给Linux管理即可。

at的工作管理:

利用atp来查询,利用atrm来删除。

atp和atrm命令

如果你是在一个非常忙碌的系统下运行at,能不能指定你的工作在系统较闲的时候才进行呢?可以的,那就是用batch命令吧!

batch:系统有空时才进行的后台任务

其实batch是利用at来进行命令的执行,只是加入了一些控制参数而已。

这个batch神奇的地方在于:它会在CPU工作负载小于0.8的时候,才进行你执行的工作任务。

负载的意思是:CPU在单一时间点所负责的工作数量,不是CPU的使用率。举例来说,如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能到达100%,但是CPU的工作负载则是趋近于1,因为CPU仅仅负责了一个工作。如果同时执行这样的程序两个,CPU的使用率还是100%,但CPU的负载则变成了2。当CPU的工作负载越大,代表CPU必须要在不同的工作之间进行频繁的工作切换。

batch命令的用法

其实batch也是利用atp和atrm来管理的。



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

循环执行的例行性工作调度则是由cron(crond)这个系统服务来控制的。另外,用户也可以进行例行性工作调度,Linux提供给用户控制例行性工作调度的命令是(crontab)。

与at一样,我们也可以限制使用crontab的用户账户。在这两个文件当中,/etc/cron.allow和/etc/cron.deny。

当用户使用crontab这个命令来新建工作调度之后,该项工作就会被记录到/var/spool/cron里面去了,而且是以账号来作为判别的。

crontab命令
代表意义
特殊字符

注意,crontab -r 命令是删除所有的crontab内容。

3.2、系统的配置文件:/etc/crontab

这个crontab -e 主要是针对cron来设计的,如果是系统的例行性任务时,就需要编辑/etc/crontab这个文件。

基本上,cron这个服务的最低检查限制的是“分钟”,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron里面的数据内容。因此,只要你编辑完/etc/crontab这个文件,并且将它保存之后,那么cron的设置就自动会来执行。由于crontab是读取到内存中的,所以在你修改完/etc/crontab之后,可能并不会马上执行,这个时候请重启crond这个服务吧。

/etc/crontab

/etc/crontab这个文件里面支持两种执行命令的方式,一种是直接执行命令,一种则是以目录来规划。

3.3、一些注意事项

资源分配不均问题;

取消不要的输出选项;

安全的检验;

周与日、月不可同时并存。


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

如果你的Linux主机24小时全天、全年无休的服务器之用,那么你只要有atd与crond这两个服务来管理你的例行性工作调度即可。如果你的主机并非24小时开机,那么你的某些例行性任务可能就无法运行,此时就得要用到anacron这个工具了。

4.1、什么是anacron

anacron并不是用来替代crontab的,anacron存在的目的就在于我们上头提到的,处理非24小时一直启动的Linux系统的crontab的执行。所以annacron并不能指定何时执行某项任务,而是以天为单位或者是在开机后立刻进行anacron的操作,它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止。

anacron读取的时间记录文件(timestamp)了!anacron会去分析现在的时间与时间记录文件所记载的上次执行anacron的时间,两者比较后若发现有区别,那就是在某些时刻没有进行crontab。此时anacron就会开始执行未进行的crontab任务了。

所以anacron其实也是通过crontab来运行的,因此anacron运行的时间通常有两个,一个是系统开机期间运行,一个是写入crontab的调度中,这样才能在特定时间分析系统未进行的crontab工作。

anacron其实是一个程序并非一个服务。

anacron命令
/etc/crontab

如果 anacron 执行 cron.daily时,它是这样运行的:

1,由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天;

2,由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳;

3,由上个步骤与目前的时间比较,若差异天数未1天以上(含1天),就准备进行命令;

4,若准备进行命令,根据/etc/anacrontab的设置将延迟5分钟;

5,延迟时间过后,开始执行后续命令,即“run-parts /etc/cron.daily”这串命令;

6,执行完毕后,anacron程序结束。

所以说,时间戳是非常重要的。anacron是通过该记录与目前的时间差异,了解到是否应该要进行某项任务的工作。

现在知道为甚么隔了一阵才将Linux开机,但是开机后一段时间内系统很忙碌,那就是因为anacron正在执行过去crontab未进行的各项工作制度。

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

推荐阅读更多精彩内容

  • Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。...
    孙燕超阅读 1,815评论 0 4
  • 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (cro...
    Zcclucky阅读 574评论 0 0
  • Linux 系统提供了使用者控制计划任务的命令 :crontab 命令。 一、crond简介 crond是linu...
    happeace阅读 1,768评论 0 53
  • 为当前用户创建cron服务 1. 键入 crontab -e 编辑crontab服务文件 例如 文件内容如下: *...
    jeckHao阅读 1,879评论 0 0
  • 马路无所事事的躺着 从没有跟路灯说过十月什么话 它生出些句号 青苔不绿 夕阳不来 夏至未离 金秋未黄 笔尖发病 心...
    禁止吃糖阅读 301评论 4 3