crond定时任务详细分析

一、定时任务crond的介绍  

crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。一般情况下,我们安装文成系统之后,默认变回启动crond任务调度服务,crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作。如果有,变会根据预先设定的定时任务自动执行该定时任务,就如同生活中的闹钟一样。

[[email protected] ~]# chkconfig --list|grep crond    <--查询是否开启
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
[[email protected] ~]# crontab -l    <--查询crond的配置
no crontab for root

因为crond是每分钟级别,如果crond服务搞不定了,一般工作中写脚本守护程序进程:

[[email protected] ~]# cat corn 
while true
do
    echo "wangde .....Rui"
    sleep 1
done
#内容意思为每秒echo出"wangde .....Rui"。

补充两个概念:

程序文件:程序代码组成,但是没有在计算机内执行。当前没有执行。

守护程序或者守护进程:进程就是在计算机中正在执行的程序;守护进程就是一直运行的程序。

可以看出定时任务是一个守护进程。

[[email protected] ~]# ps -ef |grep crond
root       923     1  0 Aug25 ?        00:00:00 crond
root     27961 27915  0 15:29 pts/0    00:00:00 grep crond

crond和ssh一样是一直在后台运行的守护进程:

[[email protected] ~]# /etc/init.d/sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[[email protected] ~]# /etc/init.d/crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

二、不同系统的定时任务

windows的定时任务存放位置:所有程序->附件->系统工具->任务计划程序

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

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

[[email protected] ~]# ll /var/log/messages*
-rw-------  1 root root 113765 8月  23 23:49 /var/log/messages
-rw-------. 1 root root 226986 8月   7 02:58 /var/log/messages-20160807
-rw-------  1 root root  25713 8月  14 02:58 /var/log/messages-20160814
-rw-------  1 root root  25649 8月  21 02:58 /var/log/messages-20160821
[[email protected] ~]# ll /var/log/secure*
-rw-------  1 root root  43166 8月  23 23:44 /var/log/secure
-rw-------. 1 root root  91198 8月   7 03:16 /var/log/secure-20160807
-rw-------  1 root root 133631 8月  14 03:46 /var/log/secure-20160814
-rw-------  1 root root 134102 8月  21 03:30 /var/log/secure-20160821
#每周一份日志,系统自身执行的定时任务

系统默认执行的日志脚本存放位置:

[[email protected] ~]# cd /etc/logrotate.d/
[[email protected] logrotate.d]# pwd
/etc/logrotate.d
[[email protected] logrotate.d]# ls -lrt
总用量 32
-rw-r--r--. 1 root root 136 8月  23 2010 ppp
-rw-r--r--. 1 root root 329 7月  17 2012 psacct
-rw-r--r--. 1 root root 100 2月   4 2013 wpa_supplicant
-rw-r--r--. 1 root root 100 2月  22 2013 yum
-rw-r--r--. 1 root root 210 8月  15 2013 syslog
-rw-r--r--. 1 root root  71 8月  17 2013 cups
-rw-r--r--. 1 root root 219 11月 23 2013 sssd
-rw-r--r--. 1 root root 103 11月 26 2013 dracut
[[email protected] logrotate.d]# 
[[email protected] logrotate.d]# less syslog 
[[email protected] logrotate.d]# cat syslog |grep -v ‘^$‘
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

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

[[email protected] logrotate.d]# ll /etc/ |grep cron
-rw-------.  1 root root    541 11月 23 2013 anacrontab
drwxr-xr-x.  2 root root   4096 7月  27 13:14 cron.d
drwxr-xr-x.  2 root root   4096 7月  27 13:17 cron.daily
-rw-------.  1 root root      0 11月 23 2013 cron.deny
drwxr-xr-x.  2 root root   4096 7月  27 13:13 cron.hourly
drwxr-xr-x.  2 root root   4096 7月  27 13:15 cron.monthly
-rw-r--r--.  1 root root    457 9月  27 2011 crontab
drwxr-xr-x.  2 root root   4096 9月  27 2011 cron.weekly
[[email protected] logrotate.d]# pwd
/etc/logrotate.d

以下是系统及的定时任务,一般用户自定义的定时任务不会放在这里:

[[email protected] logrotate.d]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

2.用户执行的定时任务:某个用户或者系统管理员定期要做的任务工作,例如每个5分钟和互联网时间服务器同步(当然这个是最基础的系统优化),每天晚上0点备份站点数据及数据库数据,这些工作一般都是用户自己设定定时任务才行,

例如:服务器时间同步:

[[email protected] ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

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

linux系统下基本有以下几种:at(适合只执行一次)、crontab(最常用)、anacron。

at:适合执行一次就借宿的调度任务命令。例如:在今晚需要处理一个任务,仅仅是今天晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行。(在工作中不常用,所以默认为关闭状态)

[[email protected] ~]# chkconfig --list |grep atd
atd                0:off    1:off    2:off    3:off    4:off    5:off    6:off

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

备注:

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

2.crond服务是工作冲常用的重要服务,at和anacron很少使用,可以忽略,

3.工作中几乎每个服务器都会用到crond服务。




四、crontab命令的格式 (下面进入主题)

crond    守护进程,一直运行着的

crontab    设置命令,-e 编辑;-l 列表。

[[email protected] logrotate.d]# crontab -h
crontab:无效选项 -- h
crontab: usage error: unrecognized option
usage:    crontab [-u user] file
    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 deleting user‘s crontab)
    -s    (selinux context)

crontab -e  相当于 vi /var/spool/cron/root

crontab -l   相当于 cat /var/spool/cron/root

[[email protected] ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
[[email protected] ~]# cat /var/spool/cron/root 
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

让普通用户执行crontab -u richy -e   或者 切换到richy用户下 再使用crontab

crontab 定时任务命令字段解释

*           *         *         *           *

0-59   0-23   1-31   1-12     0-6

*  每   * * * * * /bin/sh/scripts/richy.sh  每分钟执行richy.sh

-  范围    00 17-19 * * * /bin/sh/scripts/richy.sh  每天17点,18点,19点整执行richy.sh

, 分隔   30 17,18,19 * * * /bin/sh/scripts/richy.sh  每天17:30,18:30,19:30执行richy.sh

/n  每单位时间   */10 * * * * /bin/sh/scripts/richy.sh  每10分钟执行richy.sh

30 3-5 17-19 * * /bin/sh/scripts/richy.sh  每月的17,18,19号的3:30,4:30,5:30执行命令richy.sh

五、crontab编辑定时任务依赖的服务

[[email protected] ~]# chkconfig --list |grep crond
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
[[email protected] ~]# ps -ef |grep crond |grep -v grep
root     27988     1  0 15:30 ?        00:00:00 crond

六、crondtab的总结

  1. 定时任务要加注释;
  2. 结尾不要有>/dev/null 2>&1;
  3. 如果存在目录,目录必须要存在,因为crontab不会创建新目录;
  4. 定时任务中的路径一定要是绝对路径;
  5. crond服务必须开启并运行;

    .

    .

    .

    .

以上是在学习老男孩linux教学后的个人总结

时间: 2024-11-03 20:54:00

crond定时任务详细分析的相关文章

CentOS下crond定时任务详细介绍

目录 1.定时任务crond介绍... 2.crond定时任务限权... 3.Crontab用法... 4.Crontab命令的书写格式... 5.定时服务器时间同步... 6.写定时任务注意点.. 7.调试定时任务... 1.定时任务crond介绍 1>定时任务软件种类 at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务. crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现. anacron 无法周期性执行,只能以天为周期,但有个特点,在关

图文详解crond定时任务

第1章crontd的介绍   1.1crond的含义 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 1.2关于任务调度的分类 Linux下的任务调度分为两类,系统任务调度和用户任务调度. 1.系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.

Linux内核OOM机制的详细分析(转)

Linux 内核 有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了 防止内存耗尽而内核会把该进程杀掉.典型的情况是:某天一台机器突然ssh远程登录不了,但能ping通,说明不是网络的故障,原因是sshd进程被 OOM killer杀掉了(多次遇到这样的假死状况).重启机器后查看系统日志/var/log/messages会发现 Out of Memory: Kill process 1865(sshd)

老男孩Linux Crond定时任务练习题

Linux Crond定时任务练习题 Crond是系统中用来定期执行命令或指定程序任务的一种服务或软件. 严格的说,linux系统下的定时任务软件不少,例如:at.crontab.anacron,其中crontab这个命令是在实际工作中常用于周期性执行任务.例如:每五分钟做一次服务器时间同步.要执行crontab这个命令,也需要启动一个服务crond.那么,我们对crontab练习操作一下喽. 一.根据命令说出文字含义: 1)30 3,12 * /bin/sh  /scripts/oldboy.

10.hibernate缓存机制详细分析(转自xiaoluo501395377)

hibernate缓存机制详细分析 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解. 一.N+1问题 首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题: list()获得对象: 1 /** 2 * 此时会发出一条sql,将30个学生全部查询出来

关于Delphi中的字符串的详细分析

关于Delphi中的字符串的详细分析 只是浅浅的解析下,让大家可以快速的理解字符串. 其中的所有代码均在Delphi7下测试通过. Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long String) 宽字符串(Wide String) 零结尾字符串(Null-Terminated String).PChar和字符数组 1.短字符串(Short String) 固 定长度,最大字符数个数为255,短字符串也成为长度字节(Length-byt

MVC之前的那点事儿系列(5):HttpPipeline详细分析(下)(转载)

MVC之前的那点事儿系列(5):HttpPipeline详细分析(下) 文章内容 接上面的章节,我们这篇要讲解的是Pipeline是执行的各种事件,我们知道,在自定义的HttpModule的Init方法里,我们可以添加自己的事件,比如如下代码: public class Test : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_

如何对网站进行详细分析

大部分人对于网站都不懂如何去分析:网站分析有什么好处的? 可以帮助我们看网站存在一个什么阶段,可以帮助我们看出网站有没有问题:分析网站是作为一名优化人员必备的技术,所以我们必须要懂得如何去分析网站:接下来由泡馆史明星来教大家如何对网站进行详细分析: A.站内分析 1.标题以及描述:分为".栏目页.导航页.内容页.产品页"这些都是需要我们关系的,如果标题和描述写不好会直接影响关键词排名以及网站得分,那么该如何写: ①=关键词+品牌词+公司名称.关键词+公司名称:标题字数不要超过30字内,

【Java基础】Java类的加载和对象创建流程的详细分析

相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下. 实例问题 实例代码 Parent类 1 package mytest.javaBase; 2 3 public class Parent { 4 int a = 10; 5 static int b = 11; 6 // 静态代码块 7 static { 8 System.out.println("Parent静态代码块:b=" + b)