Linux系统中有一种例行性工作(crontab)可以调度,是通过crontab和at来实现的。

这两种工作调度:

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

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

at:at是个可以处理仅执行一次就结束调度的命令,不过要执行at时,必须要有atd这个服务的支持才行。在某些新版的distributions中,atd可能默认并没有启动,那么at这个命令就会失效,不过我们CentOS默认是启动的。

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

Linux上常见的例行性工作

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

Linux会主动将系统所发生的各种信息都记录下来,这就是日志文件。由于系统会一直记录日志信息,所以日志文件将会越来越大。我们知道大型文件不但占容量,还会造成读写性能的困扰,因此实时将日志文件数据挪一挪,让旧的数据与新的数据分别存放,则比较可以有效地记录日志信息。这就是log rotate的任务,这也是系统必要的例行任务。

  1. 日志文件分析logwatch的任务

如果系统发生了软件问题、硬件错误等,绝大多部分的错误信息都会被记录到日志文件中,因为此系统管理员的重要任务之一就是分析日志文件,但你不可能动手通过vi的软件去检查日志文件,因为数据太复杂了,我们的CentOS提供一个程序“logwatch”来主动分析日志信息,所有你会发现,你的root老是收不到标题为logwatch的信件,那是正常的。你最好能看看该信件的内容。

  1. 新建locate的数据库

Locate这个命令是通过已经存在的文件名数据库来进行系统中文件名的查询。我们的文件名数据库是放置到/var/lib/mlocate/中。问题是,这个数据库怎么会自动更新呢?这就是系统的例行性工作所产生的效果了,系统会主动进行updatedb。

  1. Whatis数据库的建立

与locate数据库类似的,whatis也是数据库,这个whatis是与man page有关的一个查询命令,不过要使用whatis命令时,必须要拥有whatis数据库,而这个数据库也是通过系统的例行性工作调度来自动执行的。

  1. RPM软件日志文件的新建

PRM是一种软件管理的机制。由于系统可能会经常更改软件,包括软件的新安装、非经常性更新等,都会造成软件文件名的区别。为了方便未来跟踪,系统也帮我们将文件名做个排序的记录呢,有时系统也会通过调度来帮助RPM数据库的重新生成。

  1. 删除临时文件

某些软件在运行中会产生一些临时文件,但是当这个软件关闭时,这些临时文件可能并不会主动被删除。有些临时文件则有时间性,如果超过一段时间后,这个临时文件就没用了,此时删除这些临时文件就是一件重要的工作,否则磁盘空间会被耗光。系统通过例行性工作调度执行名为tmpwatch的命令删除这些临时文件。

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

如果你有安装类型www服务器软件(一个名为apache的软件),那么你的linux系统通常就会主动分析该软件的日志文件,同时某些认证的网络信息是否过期的问题,我们的Linux系统也会帮我们进行自动检测。

仅执行一次的工作调度

atd的启动与at运行的方式

要使用单一工作调度时,我们的Linux系统上面必须要有负责这个调度的服务,那就是atd。不过并非所有的Linux distributions都默认会把它打开,所以,某些时刻我们必须要手动将它启动才行。启动的方法很简单。

/etc/init.d/atd restart

正在停止atd:     [确定]

正在激活 atd:     [确定]

#再设置一下开机时就启动这个服务,免得每次重新启动都得再来一次

Chkconfig atd on

at的运行方式

  1. 既然是工作调度,那么应该会有产生工作的方式,并且将这些工作排进日程表中。那么生成工作的方式是怎么进行的?事实上,我们使用at这个命令来生成所要运行的工作,并将这个工作以文本文件的方式写入/var/spool/at/目录内,该工作便能等待atd这个服务的取用与执行了,就这么简单。
  2. 不过,并不是所有的人都可以进入at工作调度。为什么?因为安全的理由,很多主机被所谓的“绑架”后,最常发现的就是他们的系统当中多了很多的骇客程序,这些程序非常可能运用工作调度来执行或搜集系统信息,并定时回报给黑客团队。所以,除非你认可的账号,否则先不要让他们使用at吧!那么怎样使用at的管理呢?
  3. 我们可以利用/etc/at.allow 与/etc/at.deny这两个文件来进行at的使用限制呢!加上这两个文件后,at的工作情况其实是这样的:

(1)、 先寻找/etc/at.allow这个文件,写在这个文件中的用户才能使用at,没有在这个文件中用户则不能使用at(即使没有写在at.deny当中)。

(2)、如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,若写在这个at.deny的用户则不能使用at,而没有在这个at.deny文件中的用户就可以使用at了。

(3)、如果两个文件都不存在,那么只有root可以使用at这命令。

  1. 通过这个说明,我们知道/etc/at.allow 是管理较为严格的方式,而/etc/at.deny则较为松散(因为账号没有在该文件中,就能够执行at了)。在一般的distributions当中,由于假设系统上的所有用户都是课信任的,因为系统通常会保留一个空的/etc/at.deny文件,意识是允许所有使用at命令的意识(你可以自行检查一下该文件)。不过,万一你不希望有某些用户使用at的话,将那个用户的账号写入/etc/at.deny即可!一个账号写一行。

实际运行一个工作调度

at [-mldv] TIME

at –c 工作号码

参数:

-m : 当at的工作完成后,即使没有输出信息,以email通知用户该工作已完成。

-l  :at –l 相当于atq,列出目前系统上面的所有该用户的at调度。

-d : at –d相当于atrm,可以取消一个在at调度中的工作。

-v :  可以使用较明显的时间格式列出at调度中的任务列表。

-c : 可以列出后面接的该项工作的实际命令内容。

TIME:时间格式,这里可以定义什么时候要进行at这项工作的时间,格式有:

HH:MM    ex>04:00

在今日的HH:MM时刻进行,若已超出该时刻,则明天的HH:MM进行此工作。

HH:MM YYYY-MM-DD     ex>04:00 2009-03-17

强制规定在某年某月某一天的特殊时刻进行该工作。

HH:MM[am|pm] [month] [Data]  ex>04pm March 17

也是一样,强制在某年某月某日的某时刻进行。

HH:MM[am|pm] + number [minutes|hours|days|weeks]

ex> now +5 minutes   ex> 04pm+ 3days

在某个时间点“再加上几个时间后”才执行。

范例一:再过5分钟后,将/root/.bashrc 寄给root自己

at now +5 minutes

/bin/mail root –s “testing at job” < /root/.bashrc

<EOT> <=这里输入[ctrl]+d就会出现<EOF>的字样,代表结束。

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

相对于at是仅执行一次的工作,循环执行的例行性工作调度则是由cron(crond)这个系统服务来控制的。刚才谈到linux系统上面原本就非常多的例行性工作,因为这个系统服务是默认启动。另外,由于用户自己也可以进行例行性工作调度,所以Linux也提供用户控制例行性工作调度的命令(crotab)。

用户设置

用户想要新建循环型工作调度时,使用的是crontab这命令。不过,为了安全性问题,与at类似,我们也可以限制使用crontab的用户账号。使用的限制数据有:

/etc/cron.allow

将可以使用crontab的账号写入其中,若未记录到这个文件当中的用户,就不可以使用crontab。、

/etc/cron.deny

将不可以使用crontab的账号写入其中,若未记录到这个文件当中的用户,就可以使用crontab。

linux例行性工作调度学习(一)的更多相关文章

  1. 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)

    循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...

  2. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

  3. 重识linux-循环执行的例行性工作调度

    重识linux-循环执行的例行性工作调度 1 用户的设置 1)/etc/cron.allow  可以使用的账号,在这个文件内 2)/etc/cron.deny 不可以的放在这个文件里面 allow的优 ...

  4. Linux学习-循环执行的例行性工作排程

    循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...

  5. Linux学习-什么是例行性工作排程

    那么 Linux 的例行性工作是如何进行排程的呢?所谓的排程就是将这些工作安排执行的流程之意! 咱们的 Linux 排程就是透过 crontab 与 at 这两个东西! Linux 工作排程的种类: ...

  6. linux备忘录-例行性工作排程 (crontab)

    例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...

  7. Linux管理,例行性工作,at和cron

    at 仅执行一次就结束调度(服务atd必须启动) at的配置信息 1.我们设定的at进程其实都是被以文本的方式写入到/var/spool/at/目录内,然后这些设定的进程便会等待atd服务来启动这些进 ...

  8. 例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...

  9. 第十六章、例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式 ...

随机推荐

  1. Zookeeper 报ConnectionLostException连接丢失错误汇总

    我google出来的几个结果都没有用,这里写出来或许可以帮助别人,这些都是google出来的结果,没有经过验证是否真的能够解决问题. 当前zookeeper的连接状态是connecting,这个时候连 ...

  2. .NET中的枚举用法浅析

    本文简单分析了.NET中的枚举用法.分享给大家供大家参考.具体分析如下: 我理解的枚举就是编程中约定的一个“可选值”:例如QQ的在线状态,分别有    在线,Q我吧,隐身,忙碌等等...我觉得这就是一 ...

  3. boost-tokenizer分词库学习

    boost-tokenizer学习 tokenizer库是一个专门用于分词(token)的字符串处理库;可以使用简单易用的方法把一个字符串分解成若干个单词;tokenizerl类是该库的核心,它以容器 ...

  4. Qt 配置文件QSettings读取以及中文问题

    QSettings settings("xxxx.ini",QSettings::IniFormat);settings.setIniCodec(QTextCodec::codec ...

  5. 源码分析——Action代理类的工作

     Action代理类的新建 通过<Struts2 源码分析——调结者(Dispatcher)之执行action>章节我们知道执行action请求,最后会落到Dispatcher类的serv ...

  6. 再谈iOS 7的手势滑动返回功能

    本文转载至 http://blog.csdn.net/jasonblog/article/details/28282147  之前随手写过一篇<使用UIScreenEdgePanGestureR ...

  7. 红黑树C++实现

    1 /* 2 * rbtree.h 3 * 1. 每个节点是红色或者黑色 4 * 2. 根节点是黑色 5 * 3. 每个叶子节点是黑色(该叶子节点就空的节点) 6 * 4. 如果一个节点是红色,则它的 ...

  8. golang build 编译规则

    文章来源: http://blog.csdn.net/varding/article/details/12675971 讲述了golang中的条件编译,摘要如下: 第一种条件编译的方法:编译标签 编译 ...

  9. cocos2d-X学习之主要类介绍:精灵角色(CCSprite)

    CCSprite是一副2D图像,CCSprite可以通过图像或者图像中的一个矩形子区域创建 如果它的父节点或者任意继承树上的节点是CCspriteBatchNode则具有下述特性: 父节点是CCSpr ...

  10. J2EE知识体系(简单整理)