`

企鹅日记(十五):例行性工作排程crontab

阅读更多

linux系统常见的例行性任务有:

× 进行日志文件的论替(log rotate)

× 日志文件分析logwatch的任务

× 新建locate的数据库

× whatis 数据库的建立

× RPM软件日志文件的新建

× 删除临时文件,通过tmpwatch命令来删除这些临时文件

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

====仅执行一次的工作调度at====

先要启动atd这个服务:

# /etc/init.d/atd restart

设置开机就自动启动请执行:

# chkconfig atd on

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

at的授权管理:通过/etc/at.allow  /etc/at.deny这两个配置文件限制

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

2,如果/etc/at.allow不存在,就寻找/etc/at.deny,若写在这个文件的用户则不能使用at,否则就可以使用at

3,如果两个文件都不存在,那么只有root可以使用at

上面两个配置文件中,一行一个帐号名即可

# at [-mldv] TIME

# at -c 工作号码

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

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

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

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

TIME的格式有:

HH:MM:在今天的HH:MM时刻进行,如果已超过该时刻,那么明天的HH:MM执行

HH:MM YYYY-MM-DD:强制规定某年某月某日某时某分执行

HH:MM[am|pm] [Month] [Date]   –> 04pm March 17

HH:MM[am|pm] + number [minutes|hours|days|weeks]  –> 04pm + 3 days  –> now + 3 minutes

$ at now + 5 minutes
at> /bin/mail root -s “tesing at job” < /root/.bashrc
at> <EOT>   <===在这里输入CTRL + D可以结束输入,出现一个EOT就代表结束
job 1 at Mon Oct 29 21:12:00 2012

最好使用绝对路径来执行命令

使用at命令在某时刻在终端中显示消息hello:

# echo “hello” > /dev/tty1

删除at的工作:

# at -l

# atrm [jobnumber]

batch:系统有空时才进行后台的任务,否则等待暂缓执行,内部还是使用的at

# batch 23:00 2012-3-23

====循环执行的工作调度crontab====

与at类似,对于crontab的权限控制也是两个配置文件:/etc/cron.allow   /etc/cron.deny,检查顺序也跟之前相同。

当用户使用crontab这个命令新建工作调度后,该项工作被记录到/var/spool/cron/ 里面去了,而且是以帐号作为判别的。距离来说,yidao这个帐号的工作会被记录到/var/spool/cron/yidao这个文件中去

日志文件记录在/var/log/cron这个日志文件中

# crontab [-u username] [-l|-e|-r]

-u:只有root用户可以使用这个参数,帮其他用户新建或删除crontab工作调度

-e:编辑crontab的工作内容

-l:查阅crontab的工作内容

-r:删除所有crontab的内容,若仅想删除一项,用-e去编辑删除一项即可

$ crontab -e

0 12 * * * mail test -s “at 12:00″ < /home/yidao/.bashrc

# 分 时 日 月 周 命令

几个特殊符号:

* 代表任何时刻

, 代表枚举的意思,比如3点和6点都执行:0 3,6 * * * command

- 代表区域选择,比如8点到12点之间的每小时的第20分钟都执行:20 8-12 * * * command

/n 那个n代表数字,即使每隔n单位间隔的意思,例如每5分钟都进行一次:*/5 * * * * command 或者 0-59/5 * * * * command

====系统的配置文件:/etc/crontab====

刚才我们讲的crontab -e是针对用户设置的,那如果是系统的例行性任务呢,你只要编辑/etc/crontab这个配置文件即可。编辑完后需要重启crond这个服务:/etc/init.d/crond restart

# vi /etc/crontab

…..

# run-parts

01 * * * * root run-parts /etc/cron.hourly  <==每小时

02 4 * * * root run-parts /etc/cron.daily  <==每天

22 4 * * 0 root run-parts /etc/cron.weekly  <==每周日

42 4 1 * * root run-parts /etc/cron/montyly  <==每个月1号

后面可以自己随便加

/etc/cron.hourly  /etc/cron.daily 这些都是目录,意思就是放在这里面的bash脚本会自动执行,如果你自己想执行些脚本,可以建立一个目录,然后把脚本放里面,之后在/etc/crontab配置文件里加一行就行了。还有一种方式就是直接在/etc/crontabv中写命令也行。

安全检查:

很多时候被植入木马都是以例行性命令方式植入的,所以可以检查/var/log/cron里面的内容来查看是否有非你设置的cron被执行了。

周与日、月不可同时并存

====可唤醒停机时期的工作任务anacron====

anacron并不能指定何时执行某任务,而是以天为单位或者是开机后立刻执行进行anacron的操作,她会检测停机期间应该进行但没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了。

anacron其实是一个程序而并非一个服务(deamon),这个程序在centos当中已经进入了crontab的调度。默认会以一天、七天、一个月为期检测系统未进行的crontab任务。

# anacron [-sfn] [job]…

# anacron -u [job]…

-s:开始连续执行各项工作job,会依据时间记录文件的数据判断是否进行

-f:强制进行,而不去判断时间记录文件的时间戳

-n:立刻进行未进行的任务,而不是延迟等待时间

-u:仅更新时间记录文件的时间戳,不进行任何工作

job:由/etc/anacrontab定义的各项工作名

实际上若执行:

# anacron -s cron.daily

anacrontab先从/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳,然后与目前时间进行对比,如果差异大于等于1天,开始执行run-parts /etc/cron.daily这串命令。

所以,anacron并不需要额外设置,只要设置anacron开机运行就行了:

=======================END==========================

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

    排程設定檢查步驟.pdf

    总之,本文件是一份关于鼎捷系统T100排程设置和检查的详细指南,涉及内容包括排程架构、程序设定、异常检查、排程关闭与重启说明、crontab配置、排程状态检查、参数设置、问题排除等多个方面。掌握这些知识点对于...

    crontab –e使用实操

    在 Ubuntu 中,可以使用以下命令安装 Crontab: `apt-get install cron` 在 CentOS 中,可以使用以下命令安装 Crontab: `yum -y install vixie-cron` 创建 Shell 脚本 为了实现 MySQL 备份,我们需要创建一个 ...

    Linux用crontab例行工作安排.docx

    在Linux系统中,`crontab`是一个非常重要的工具,用于设置周期性的任务调度,也就是我们通常所说的定时任务。这个工具允许用户定义一系列的规则,按照预设的时间间隔执行特定的命令或者脚本,这对于系统维护、数据...

    crontab格式详解

    crontab 格式详解 crontab 是 Linux 中的一个命令,用于让用户在固定时间或固定间隔执行程序。...crontab 是一个非常有用的命令,能够让用户在固定时间或固定间隔执行程序,从而提高工作效率和自动化程度。

    Linux crontab 命令格式与详细例子

    ### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。...通过本文的讲解,相信读者已经对Crontab有了更深刻的理解,并能灵活运用到实际工作中。

    linux C7 crontab离线安装包

    在Linux系统中,Crontab(也称为cron table)是一个非常重要的工具,用于安排周期性的任务,例如定期备份、日志清理、系统维护等。在Linux CentOS 7(C7)环境中,通常使用RPM(Red Hat Package Manager)包管理系统...

    centos7 crontab 安装包

    `crontab`的每一行由五个字段组成,分别代表分钟、小时、日期、月份和星期,后面跟上要执行的命令。例如,每小时的第一分钟执行`/path/to/command`: ``` * * 1 * * /path/to/command ``` 星号(*)代表任意值,空格...

    Linux网络操作系统基础:周期性任务crontab.pptx

    Linux网络操作系统基础中,周期性任务的管理是一个关键部分,主要涉及到`cron`服务和`crontab`命令。`cron`是Linux下的一种计划任务调度器,它允许用户或系统管理员安排任务在特定时间自动执行。这在系统维护、自动...

    crontab计划任务的使用方法

    Crontab(cron table)是Unix和类Unix操作系统中的一种调度服务,用于设置周期性执行的任务。它的工作原理是通过守护进程`crond`来激活定时任务,这些任务被称为cron jobs。下面将详细介绍crontab的各个知识点。 1....

    linux里面的crontab资料

    Linux中的`crontab`是系统管理员和普通用户用来安排周期性任务的工具。它允许你在特定的时间间隔或特定时间点执行脚本、程序或任何命令。`crontab`这个名字来自于“cron table”,意为定时任务表。下面将详细解释`...

    linux crontab 详解

    ### Linux Crontab 详解 ...通过以上的解析,我们可以更加深入地了解 crontab 的工作原理和使用方法,这对于在 Linux 系统中自动化任务是非常有用的。掌握 crontab 的使用可以极大地提高系统的管理和维护效率。

    crontab 详细用法 定时任务.pdf

    crontab 详细用法 定时任务 crontab 是 Linux 系统中的一种任务调度工具,允许用户在指定的时间执行 shell 脚本或一系列 Linux 命令。crontab 的使用非常广泛,例如系统管理员可以安排备份任务、日志记录任务、系统...

    cron和crontab概念详解

    例如,“1,15 * * * *”意味着在每天的第一分钟和第十五分钟执行命令。 - **命令**:可以是一条命令或一系列命令,需要用引号括起来。命令字符串必须遵循Bourne shell的语法规则。 ##### 2.5 示例解析 例如,以下...

    crontab详解

    crontab是一种常用的定时任务调度工具,它允许用户设置周期性执行的命令。crontab可以安排在特定的时间或日期自动执行任务,比如备份文件、更新系统、执行清理脚本等。它广泛应用于Linux操作系统和Unix系统。 ...

    crontab命令格式与例子

    ### crontab命令格式与例子解析 #### 一、crontab简介 `crontab` 是 Linux 和 Unix-like 操作系统中一个非常重要的工具...在实际应用中,合理设置 cron job 可以显著减少管理员的工作负担,提升系统的可用性和可靠性。

    例行性工作调度-15th1

    在Linux系统中,例行性工作调度是管理自动化任务的关键组成部分,允许管理员或用户设定在特定时间执行的任务。主要有两种调度工具:`cron` 和 `at`。 `cron` 是一种周期性的任务调度器,它按照预设的时间间隔执行...

    unix Crontab实例.

    在系统层面,Crontab还可以通过编辑`/etc/crontab`文件来设置全局性的周期任务,如每天、每周、每月执行的例行维护任务。此外,Crontab还支持在特定目录下运行脚本,例如`/etc/cron.hourly`、`/etc/cron.daily`、`/...

    PyPI 官网下载 | python-crontab-2.2.3.tar.gz

    7. **跨平台兼容性**:虽然`python-crontab`主要设计用于Unix/Linux系统,但在安装了模拟cron环境的其他平台上,如Windows,也可能能正常工作。 8. **版本2.2.3的更新**:虽然具体版本2.2.3的变更日志未给出,通常...

    crontab-46.1.tar.gz

    `crontab`是Unix/Linux系统中用于设置周期性被执行任务的命令,它允许用户根据预定义的时间间隔安排任务。在MACOSX上,虽然它不是内置的,但可以通过安装来实现。`crontab-46.1.tar.gz`是一个压缩包文件,包含了源...

    Linux定时任务Crontab详解

    Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍能记住了,关键是要记住/var/spool/cron这个目录。下面看一下...

Global site tag (gtag.js) - Google Analytics