`

企鹅日记(十五):例行性工作排程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/

分享到:
评论

相关推荐

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

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

    Linux用crontab例行工作安排.docx

    Linux用crontab例行工作安排.docx

    例行性工作调度-15th1

    若两文件均不存在,则默认仅有root可以使用at指令例行性工作调度循环执行的例行性工作调度用户的设置安全限制不在此文件内的用户不允许使用crontab(系统默认

    crontab用法详解

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不...

    Linux定时任务Crontab详解

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

    unix crontab的时间段任务统计

    rar中包含两个文件,一个是calCrontab.sh统计脚本,一个是crontab_l示例文件。使用步骤如下: 在命令行依次执行: crontab -l &gt; crontab_l sh ./calCrontab.sh 接下来会提示输入年月日时分,请按照数字不间隔...

    Linux定时任务Crontab详解(推荐)

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

    Linux操作系统中例行性命令的建立

    crontab 基本上有两种建立例行性命令的方式,一种是针对所有使用者,可以藉由 crontab -e 的指令来下达工作排程;另一种是针对系统管理员,可以直接藉由修改 /etc/crontab 这一个文字文件,来直接排程。

    local-crontab:local:alarm_clock:将本地crontab转换为UTC crontab

    本地crontab NodeJS库和实用程序,用于将本地时区中的crontab转换为一组UTC crontab。 由于夏时制,它将创建多个UTC crontab。 在线使用! 在查看 用作脚本 $ npx local-crontab -h usage: local-crontab [-h] [-v...

    Crontab:本地php crontab管理

    要求应该在 monst Linux 风格的系统上工作。使用示例使用安装它或简单地将文件包含在某处: require("crontab/src/Crontab/Crontab.php"); 附加两个新作业并将它们设置为每分钟运行一次: $ cron = new \ Crontab \ ...

    centos7 crontab 安装包

    centos7 crontab 安装包

    aws-on-off:自动将 AWS 机器插入 crontab 调度程序的脚本

    自动将 AWS 机器插入 crontab 调度程序的脚本 用: 将 aws.conf 复制到 /etc/rsyslog.d/ 该脚本有4个功能: add instance_id:添加机器到调度remove instance_id:从计划中删除主机on {instance_id}:开启所有...

    linux C7 crontab离线安装包

    linux C7 crontab离线安装包

    crontab使用方法crontab使用方法

    crontab使用方法crontab使用方法crontab使用方法crontab使用方法crontab使用方法

    crontab计划任务的使用方法

    1. 语法介绍 2. 使用方法: 3. 创建crontab? 4. 列出crontab文件 5. 编辑crontab文件 6. 删除crontab文件 7. 恢复丢失的crontab文件 8. crontab中的输出配置

    redhatlinux6 Crontab安装

    redhatlinux6 Crontab安装方法,与二个软件包

    Crontab命令.doc

    Crontab命令

    .NET的Crontab-.NET开发

    NCrontab:用于.NET的Crontab NCrontab是一个以C#编写的,面向.NET Standard Library 1.0的库,并提供以下功能:分析crontab表达式格式化crontab表达式的方式计算NCrontab:用于.NET的Crontab NCrontab是一个以C#...

    linux详细命令笔记:crontab、压缩、chmod等

    手写的linux笔记,图文形式,尽可能的在难点地方写的详细一点,比如周期性的命令crontab,压缩命令,chmod命令的解析等等

    crontab:一个基于workerman用PHP编写的crontab

    Crontab 一个crontab,它基于用PHP编写,精确到秒。 安装 composer require workerman/crontab 用法 start.php &lt;?php use Workerman \ Worker ; require __DIR__ . '/../vendor/autoload.php' ; use ...

Global site tag (gtag.js) - Google Analytics