目录

1、定时任务crond介绍...

2、crond定时任务限权...

3、Crontab用法...

4、Crontab命令的书写格式...

5、定时服务器时间同步...

6、写定时任务注意点..

7、调试定时任务...

1、定时任务crond介绍

1>定时任务软件种类

at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。

crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现。

anacron 无法周期性执行,只能以天为周期,但有个特点,在关机状态下未执行的任务,下次开机时可以补上执行

注:crontab为最常用的定时任务。

2>crontab工作

运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)

默认系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过/etc/cron.allow文件限制权限。

3>crontab支持两种状态:

a.直接编写计划任务;

b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定。

2crond定时任务限权

可对各用户使用定时任务进行管理

1)拒绝用户使用crontab任务

在/etc/cron.deny中添加要拒绝的用户名,格式如下:

listen

nobody

noaccess

username1

username2

username3

.

2)允许用户访问crontab任务

在/etc/cron.allow中添加要允许的用户名,格式如下:

root

username1

username2

.

3)定期执行一个目录下的文件

在/etc/crontab中添加目录,格式如下:

01 * * * * root run-parts 目录

注:使用run-parts可定义定期执行的目录

4)限权测试

1>添加用户

[root@test ~]# useradd test

[root@test ~]# echo 123456 |passwd test--stdin  #<==非交互模式创建密码

Changing password for user test.

passwd: all authentication tokensupdated successfully.

2>拒绝测试

[root@test ~]# cat /etc/cron.deny

test

[root@test ~]#

[root@test ~]# su - test

[test@test ~]$ crontab -e

You (test)are not allowed to use this program (crontab)

See crontab(1) for more information

在cron.deny中加入用户后,该用户没有权限编辑定时任务

3>允许测试

[root@test ~]# cat /etc/cron.allow

test

[root@test ~]# su - test

[test@test ~]$ crontab -e   #<==test用户编辑成功

*/1 * * * * echo successful >/tmp/a.log

[test@test ~]$ crontab -l

*/1 * * * * echo successful >/tmp/a.log

在cron.allow中加入用户后,该用户能编辑定时任务

4>清空允许用户

[test@test ~]$ su - root

Password:

[root@test ~]# echo >/etc/cron.allow

[root@test ~]# su - test

[test@test ~]$ crontab -l  #<==test用户连查看的权限都没有

You (test)are not allowed to use this program (crontab)

See crontab(1) for more information

[test@test ~]$ cat /etc/cron.deny

test

清空cron.allow允许用户后,该用户又被cron.deny拒绝,

得出结论:/etc/cron.allow优先于/etc/cron.deny配置

3Crontab用法

[root@yang1 data]# crontab --help   #<==注:crontab –l –e都是直接操作/var/spool/cron/下当前用户名的文件

usage: crontab [-u user] file    #<==指定某用户如crontab –u yang2 –e,编辑yang2家目录下的crontab

crontab [-u user] [ -e | -l | -r ]

(default operation is replace,per 1003.2)

-e   (edit user's crontab)  #<==编辑当前用户的定时任务

-l   (list user's crontab)  #<==查看当前用户的定时任务

-r   (delete user's crontab)  #<==删除定时任务

-i   (prompt before deletinguser's crontab) #<==删除crontab文件内容,删前会有提示

-s   (selinux context)

注:crontab –e 编辑定时任务,退出时可以检查语法,直接编辑/var/spool/cron/root不能。如果大批量添加任务,则使用echo追加。

cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。

4Crontab命令的书写格式

  *      *     *      *     *    /bin/sh /scripts/yy.sh

  分     时     日     月     周    命令和文件路径

(00-59)  (0-23)   (1-31)   (1-12)    (0-6)         

 

所用符号表示意思

星号每的意思

减号连续一段时间,如:00 17-19 * * * cmd  每天下午17点,18点,19点执行一次命令

逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令

/n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令

1)举例:

30 12-16/2 * ** cmd

每天的中午12点到下午4点间,每隔2小时执行一次

* 23-7/1 * * 25pxd

注:这是一个错误的命令

日和周不能同时用,若要以月为间隔,则日或周必有一个有值

其它如:小时上有值,则分钟上也要有值

*/1 * * ** echo yangrong >>/var/log/yy > /dev/null 2>&1

每隔一分钟把yangrong打印到yangrong1文件中,但该命令无法执行,因为>>与>/dev/null不可同时使用

2)/dev/null 2>&1解释

0是标准输入    使用<或<<

1是标准输出    使用>或>>

2是标准错误输出  使用2>或2>>

>/dev/null 2>&1  即错误输出与标准输出全部重定向到空,可以写成1>/dev/null 2>/dev/null

3)关于重定向的作用

重定向到空可以避免碎片文件占用inode资源

重定向到一个指定log里,可以看任务是否执行

4)关于导致磁盘inode满情况分析

定时任务执行成功or失败时,程序会向上层发送mail,由于平时工作中不打开sendmail功能,所以邮件会存储在临时目录/var/spool/clientmqueue,随着执行的任务次数多,文件也会越来越多,直到某一天,添加文件时,提示No space left on device,主要问题原因不在于垃圾文件会占很大空间,而在于每个文件会占用inode节点。(centos6.4默认不装sendmail,可能不会导致这个问题发生)。

所以crontab规则后需加 /dev/null 2>&1。

注:>> 与 >/dev/null 2>&1不可同时存在,不然无法执行

5)重启crond服务

/etc/init.d/crond status  #查看当前运行状态

/etc/init.d/crond restart #重启

/etc/init.d/crond reload  #平滑重启

5、定时服务器时间同步

1)手动同步

[root@yang1 data]# which ntpdate

/sbin/ntpdate

[root@yang1 data]# /sbin/ntpdate time.windows.com

2)自动同步(使用定时任务)

#sync systime by yangrong at 2013-9-4

*/5 * * * * /sbin/ntpdate time.windows.com>/dev/null 2>&1

注:当局域网内的服务器足够多时(500+),则需自己在局域网搭建ntp server

6、写定时任务注意点:

掌握了下面7点,写定时任务就不在犯错。

序号

注意点

1

每个任务添加注释,谁写的,什么时间写的,完成什么需求?

2

执行脚本使用/bin/sh(防止脚本无执行权限),要执行的文件路径是从根开始的绝对路径(防止找不到文件)

3

尽量把要执行的命令放在脚本里,然后把脚本放在定时任务里。对于调用脚本的定时任务,可以把标准输出错误输出重定向到空。

4

定时任务中带%无法执行,需要加\转义

5

如果时上有值,分钟上必须有值

6

日和周不要同时使用,会冲突

7

>>与>/dev/null 2>&1不要同时存在

书写举例:

#backup mysql byyangrong at 2013-9-4

30 4 * * * /bin/shtar_mysql.sh >/dev/null 2>&1

7、调试定时任务

一个任务不能轻易的直接推上线上服务器,需要在测试服务器上测试好。

序号

调试方法

1

增加频率调试任务,如:生产环境2小时一次,测试机2分钟一次

2

加快时间调试任务,如:生产环境1天后执行,则添加任务后修改设备时间

3

重定向到一个日志里,查看任务执行情况。一个是定时任务后加log,一个是脚本后加log

4

环境变量可能导致问题

5

通过日志定位问题。  tail /var/log/cron

CentOS下crond定时任务详细介绍的更多相关文章

  1. linux下top命令详细介绍

    linux下top命令详细介绍 top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu.内存的使用)占用状况,top命令的执行结果是一个动态显 ...

  2. (转载)Centos下Elasticsearch安装详细教程

    原文地址:http://www.cnblogs.com/sunny1009/articles/7874251.html Centos下Elasticsearch安装详细教程 1.Elasticsear ...

  3. Centos下Elasticsearch安装详细教程

    Centos下Elasticsearch安装详细教程 1.Elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 ...

  4. CentOS安装Oracle数据库详细介绍及常见问题汇总

    一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命 ...

  5. 转---CentOS安装Oracle数据库详细介绍及常见问题汇总

    一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命 ...

  6. Centos下运行定时任务Crontab命令介绍

    1.Cron的启动与关闭 因为Cron是Linux的内置服务.能够用下面的方法启动.关闭这个服务: /sbin/service crond start           //启动服务 /sbin/s ...

  7. CentOS下安装XAMPP详细教程

    现在php的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷.windows下面的安装,就是下一步.下一步,没什么好说的,详细说一下linux下面的安装,这里以CentOS为例 ...

  8. CentOS下安装XAMPP详细教程(转)

    [原文]http://blog.csdn.net/hel12he/article/details/49781813 现在PHP的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷 ...

  9. Linux下VI命令详细介绍

       vi 是"Visual Interface" 的简称,它在Linux 上的地位就仿佛Edit 程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且 ...

随机推荐

  1. Easyui数据表格-地区列表及工具栏增删改

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. iOS开发小技巧--实现毛玻璃效果的方法

    一.美工出图 二.第三方框架 -- DRNRealTimeBlur,框架继承自UIView.使用方法:创建UIView直接继承自框架的View,就有了毛玻璃效果 三.CoreImage -- 图片加高 ...

  3. hdu3416 判断最短路是否唯一(每条边只能走一次)

    Marriage Match IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. mysql优化基础

    唯一索引(unique index)强调唯一,就是索引值必须唯一. create unique index [索引名] on 表名 (列名);alter table 表名 add unique ind ...

  5. 【收藏】Android AutoLayout全新的适配方式, 堪称适配终结者

    来源:http://blog.csdn.net/lmj623565791/article/details/49990941 更多:Android屏幕适配全攻略(最权威的Google官方适配指导) 一. ...

  6. Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现

    笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载.笔者想到了百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash ...

  7. SQLite数据库的基本操作

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...

  8. bzoj1799: [Ahoi2009]self 同类分布

    数位dp 先从1到162枚举各位数之和 s[i][j][k][l]表示i位数,第一位小于等于j,当前各位数字和为k,当前取模余数为l的方案数 然后脑补一下转移就行了 详见代码 #include < ...

  9. 绘制图形与3D增强技巧(五)----多边形图元的使用及其他

    1.注意多边形图元中的多边形只能是平面的,而且必须为凸多边形,且多边形的边不能弯曲 2.细分和边界,可以人为设置边界边和非边界边 glEdgeFlag(true)//接下来所有点均为边界边起点 glE ...

  10. 【BZOJ-4548&3658】小奇的糖果&Jabberwocky 双向链表 + 树状数组

    4548: 小奇的糖果 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 103  Solved: 47[Submit][Status][Discuss] ...