定时任务crond介绍

crond是什么?

crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动crond任务调度服务。crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作。如果有便会根据其预先设定的定时任务规则自动执行该定时任务工作。

特殊需求crond服务不能满足要求,一般工作中写脚本守护程序执行。

为什么要使用crond定时任务?

例如:我们的数据库或者代码程序需要每天晚上0点做一次全备,这样每天夜里都需要执行的周期性的工作。这就是linux系统的定时任务crond。实时备份,定时备份。

linux系统crond的定时任务

linux系统中定时任务调度的工作可以分为以下两种情况:

1、linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无需我们人为干预。

  1. #系统的日志
  2. [root@oldboy ~]# ls -l /var/log/messages*
  3. -rw------- 1 root root 598574 Dec 27 09:33 /var/log/messages
  4. -rw-------. 1 root root 292975 Dec 24 19:11 /var/log/messages-20161224
  5. -rw------- 1 root root 80222 Dec 25 10:05 /var/log/messages-20161225
  6. #安全文件
  7. [root@oldboy ~]# ls -l /var/log/secure*
  8. -rw------- 1 root root 11027 Dec 27 09:06 /var/log/secure
  9. -rw-------. 1 root root 5899 Dec 24 18:29 /var/log/secure-20161224
  10. -rw------- 1 root root 826 Dec 25 09:02 /var/log/secure-20161225

系统自动轮询任务的设置配置路径

  1. [root@oldboy ~]# cd /etc/logrotate.d
  2. [root@oldboy logrotate.d]# cat syslog
  3. /var/log/cron
  4. /var/log/maillog
  5. /var/log/messages
  6. /var/log/secure
  7. /var/log/spooler
  8. {
  9.     sharedscripts
  10.     postrotate
  11.         /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
  12.     endscript
  13. }

部分公司可能会放在/etc/corntab。

  1. [root@oldboy ~]# cat /etc/crontab
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5. HOME=/
  6.  
  7. # For details see man 4 crontabs
  8.  
  9. # Example of job definition:
  10. # .---------------- minute (0 - 59)
  11. # | .------------- hour (0 - 23)
  12. # | | .---------- day of month (1 - 31)
  13. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  14. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  15. # | | | | |
  16. # * * * * * user-name command to be executed

crond相关文件

  1. [root@oldboy ~]# ls -l /etc/|grep cron
  2. -rw-------. 1 root root 541 Nov 23 2013 anacrontab
  3. drwxr-xr-x. 2 root root 4096 Dec 16 22:09 cron.d
  4. drwxr-xr-x. 2 root root 4096 Dec 16 22:10 cron.daily
  5. -rw-------. 1 root root 0 Nov 23 2013 cron.deny
  6. drwxr-xr-x. 2 root root 4096 Dec 16 22:08 cron.hourly
  7. drwxr-xr-x. 2 root root 4096 Dec 16 22:09 cron.monthly
  8. -rw-r--r--. 1 root root 457 Sep 27 2011 crontab
  9. drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly

2、用户执行的任务工作,某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步,每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要每个用户自行设置。

编辑定时任务:crontab -e

显示定时任务:crontab -l

  1. [root@oldboy ~]# crontab -l
  2. */5 * * * * /use/sbin/ntpdate time.nist.gov >/dev/null 2>&1

linux系统下定时任务软件种类

linux系统下的定时任务软件,例如at、crontab、anacron。

at:适合仅执行一次就结束的调度任务命令,例如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行。工作中很少用到。

  1. [root@oldboy ~]# chkconfig --list|grep atd
  2. atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

crontab:可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,需要启动一个服务crond才行,这个crontab命令工作中最常使用。

  1. [root@oldboy ~]# chkconfig --list|grep crond
  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

anacron:这个命令主要用于非7*24小时开机的服务器准备的,anacron并不能指定具体时间执行任务工作,而是以天位周期或者在系统每次开机后执行的任务工作。它会检测服务器停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一遍。

注意:

1、crond服务是运行的程序,而crontab命令是用户用来设置定时规则的命令。

2、crond服务是企业生产工作中最常用的重要服务,at和anacron很少使用,可以忽略。

3、几乎每个服务器都会用到crond服务。

crontab是特权命令

  1. [root@oldboy ~]# ls -l `which crontab`
  2. -rwsr-xr-x. 1 root root 51784 Nov 23 2013 /usr/bin/crontab

crontab语法格式中特殊符号的含义

特殊符号

含义

*

*号,表示任意时间,就是"每"的意思。例如:00 23 * * * cmd表示每月每周每日的23:00都执行cmd任务。需要注意的是,每个时间位上的*表达每,如果位上是*就是该位上时间的取值范围,例如:小时上的*等价于00-23。

-

减号,表示分隔符,表示一个时间范围,区间段,如17-19点,每天的17,18,19点的00分执行任务。00 17-19 * * * cmd。就是17,18,19点整点分别执行的意思。

,

逗号,表示分隔时段的意思。30 17,18,19 * * * /bin/sh /scripts/oldboy.sh表示每天17,18,19点的半点时刻执行/scripts/oldboy.sh脚本。也可以和"-"结合使用,例如:30 3-5,17-19 * * * /bin/sh /scripts/oldboy.sh。

/n

n代表数字,即"每隔n单位时间",例如:每10分钟执行一次任务可以写成*/10 * * * * cmd,其中*/10中的*的范围是0-59,因此也可以写成0-59/10 * * * * cmd。

书写crontab定时任务

每分钟答应打印一次自己的名字拼音全拼到/server/log/自己的名字命名的文件。

  1. [root@oldboy oldboy]# crontab -e
  2. #每分钟打印自己的名字到/test/oldboy/yinshoucheng.txt
  3. * * * * * echo 'yinshoucheng' >> /test/oldboy/yinshoucheng.txt
  4. [root@oldboy oldboy]# tail -f /test/oldboy/yinshoucheng.txt

小结:

1、定时任务要加注释

2、结尾不要有>/dev/null 2>&1

3、定向的目录必须要存在

4、定时任务中的路径一定要绝对路径

5、crond服务必须开启运行

工作中调试定时任务的方法:

1、增加执行任务频率调试任务。

代码发布:个人开发环境à办公测试环境àIDC机房测试环境àIDC正式环境(分组、灰度发布)

2、调整系统时间调试任务(不能直接用于生产环境),保持5分钟。

3、通过脚本日志输出调试定时任务。

4、注意一些任务命令带来的问题。(>/dev/null 2>&1)

5、注意环境变量导致的定时任务故障。

6、通过crond定时任务服务日志调试定时任务(/var/log/cron)。

crontab定时任务生产注意的问题:

1、系统环境变量问题。

2、定时任务要用绝对路径。

3、脚本权限问题加/bin/sh。

4、时间变量问题用反斜线\%转义,最好用脚本。

5、>/dev/null 2>&1问题(1>/dev/null 2>/dev/null,&>/dev/null)。

6、定时任务规则之前加注释。

7、使用脚本程序替代命令行定时任务。

8、避免不必要的程序及命令输出(tar不使用v)。

9、切到目标目录的上一级打包目标。

10、定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)。

Linux基础介绍【第六篇】的更多相关文章

  1. Linux基础介绍【第二篇】

    远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...

  2. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  3. Linux基础介绍【第九篇】

    服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m              total used free shared buffers cached M ...

  4. Linux基础知识第六讲,远程管理ssh操作

    目录 Linux基础知识第六讲,远程管理ssh操作 一丶什么是SSH 1.什么是SSH 2.了解域名跟端口 二丶SSH命令以及远程连接linux进行维护 1.ssh命令格式 2.scp远程终端拷贝文件 ...

  5. Linux基础介绍【第四篇】

    Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...

  6. Linux基础介绍【第八篇】

    Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以 ...

  7. Linux基础介绍【第五篇】

    linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...

  8. Linux基础介绍【第七篇】

    linux用户分类 超级用户:UID=0,root 普通用户:UID 500起,由超级用户或具有超级用户权限的用户创建的用户. 虚拟用户:UID 1-499,为了满足文件或服务启动的需要而存在,一般都 ...

  9. Linux基础介绍【第三篇】

    更改SSH服务端远程登录的配置 windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest.Linux的管理用户是root,普通用户默认有很多个,远 ...

随机推荐

  1. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  2. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

  3. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  4. Zabbix基本配置及监控主机

    监控主机一版需要在被监控的主机上安装Zabbix Agent 监控主机 安装zabbix-agent 首先需要在被监控的主机上安装agent,可以下载预编译好的RPM进行安装,下载地址:http:// ...

  5. java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  6. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

  7. 自定义可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)

    前言: 最近飞机失联的太多,明天要飞北京处理服务器双机热备的问题,航空保险已买,单号是:TF10122913. 至于我的银行卡密码,在我枕头下面的字条里,要是我之后没再更新文章,请通知我家人,哈哈哈哈 ...

  8. .Net Core 系列:1、环境搭建

    前言: 2016年6月28日微软宣布发布 .NET Core 1.0.ASP.NET Core 1.0 和 Entity Framework Core 1.0. .NET Core是微软在两年前发起的 ...

  9. Spring5:@Autowired注解、@Resource注解和@Service注解

    什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...

  10. 【Java并发编程实战】-----“J.U.C”:CLH队列锁

    在前面介绍的几篇博客中总是提到CLH队列,在AQS中CLH队列是维护一组线程的严格按照FIFO的队列.他能够确保无饥饿,严格的先来先服务的公平性.下图是CLH队列节点的示意图: 在CLH队列的节点QN ...