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. 小白用advanced installer建安装包

    写这篇文章的目的是由于肯定有人跟我一样非常小白,对安装包的构建又好奇.而我自己呢也要mark一下下,so--- 一.VS安装项目 首先关于安装包的构建,实用VS自带建安装项目的方式.网上有个中文工具叫 ...

  2. python3----练习题(弹幕跟随)

    # 导入模块 import requests # 1. 网络请求 2.pip install requests import time # 用于时间控制 import random # 随机模块 产生 ...

  3. 面试之Java持久层(十)

    91,什么是ORM?         对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术: 简单的说,O ...

  4. pycharm 变量批量重命名

    Ctrl + R 替换 Ctrl + Shift + F 全局查找 Ctrl + Shift + R 全局替换

  5. CentOS下搭建LNMP+WordPress+http2.0教程

    此文是本人CentOS下搭建WordPress的一些笔记,环境搭建时间::将看过的几篇文章总结下来,形成一条龙长文.不用大家再找来找去. 本文大概分为此几部分: 一.基础命令更新: 二.服务器加速(非 ...

  6. UVALive 6560 The Urge to Merge

    题目链接:传送门 题目大意:有一个 3*n 的矩阵,每个格子里有一个数,你可以选择相邻的两个格子合并成一个,并且权值变为两数乘积,若一个数未合并,权值变为0,求最后权值总和最大值. 题目思路:以 2^ ...

  7. Leetcode-Combinations Sum II

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  8. wordpress添加关键字

    wordpress自动添加标签为关键字: <?php //判断是否为首页 if ( is_home ()) { $description = "jcomey一个文艺青年的个人博客&qu ...

  9. 手动爬虫之淘宝笔记本栏(ptyhon3)

    1.这次爬虫用到了之前封装的Url_ProxyHelper类,源代码如下 import urllib.request as ur class Url_ProxyHelper: def __init__ ...

  10. Centos6.5 DNS配置

    服务器端:192.168.186.130 1.安装 # yum -y install bind* 2.主要配置文件 [root@localhost named]# vim /etc/named.con ...