`
ritcher
  • 浏览: 82300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux crontab-自动化的任务

阅读更多

在 Linux 中,任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。红帽企业 Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新。譬如,被 locate 命令使用的 slocate 数据库每日都被更新。系统管理员可使用自动化的任务来执行定期备份、监控系统、运行定制脚本等等。

红帽企业 Linux 随带几个自动化任务的工具:cronat、和 batch

37.1. cron

cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。

cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。

要使用 cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。

37.1.1. 配置 cron 任务

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
            PATH=/sbin:/bin:/usr/sbin:/usr/bin
            MAILTO=root
            HOME=/
            # 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.monthly

前四行是用来配置 cron 任务运行环境的变量。SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute   hour   day   month   dayofweek   command

 

  • minute — 分钟,从 0 到 59 之间的任何整数

  • hour — 小时,从 0 到 23 之间的任何整数

  • day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

  • month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

  • dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

  • command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用 run-parts 脚本来执行 /etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。

# record the memory usage of the system every monday
            # at 3:30AM in the file /tmp/meminfo
            30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
            # run custom script the first day of every month at 4:10AM
            10 4 1 * * /root/scripts/backup.sh

例 37-1. crontab 的例子

根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUALEDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。

cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

37.1.2. 控制对 cron 的使用

/etc/cron.allow/etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

无论使用控制文件中的规定如何,根用户都总是可以使用 cron。

如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。

如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

37.1.3. 启动和停止服务

要启动 cron 服务,使用 /sbin/service crond start 命令。要停止该服务,使用 /sbin/service crond stop 命令。推荐你在引导时启动该服务。

分享到:
评论

相关推荐

    Linux Crontab 定时任务 命令详解

    Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时...Linux Crontab 是一个功能强大且灵活的定时任务命令,通过编写 Crontab 文件,可以实现自动化管理和维护服务器,从而提高服务器的安全性和可靠性。

    linux crontab 计划任务.docx

    Linux Crontab 计划任务 Linux Crontab 是一个强大的计划任务系统,允许用户在特定的时间和...Linux Crontab 计划任务系统是一个强大且灵活的工具,可以帮助用户自动化和安排计划任务,从而提高工作效率和自动化程度。

    linux C7 crontab离线安装包

    在Linux系统中,Crontab...总结来说,Linux CentOS 7的Crontab离线安装包提供了在无网络环境下安装和管理定时任务的能力,通过RPM包管理方式,我们可以方便地在系统中部署和配置Crontab,实现自动化维护和管理工作。

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

    `PyPI`(Python Package Index)是Python开发者的宝库,它是全球最大的Python软件包仓库,提供了无数开源Python库的下载和发布服务。标题中的"PyPI 官网下载 | ...通过熟练掌握这个库,可以更高效地实现自动化任务调度。

    swoole-crontab-master.基于swoole的定时器程序,支持秒级处理

    在IT行业中,定时任务是许多系统不可或缺的一部分,用于执行周期性的、计划性的操作,例如数据备份、清理过期记录、发送通知等。...在实际开发中,可以根据项目需求进行定制和扩展,提升系统的自动化水平和效率。

    浅谈Linux配置定时,使用crontab -e与直接编辑/etc/crontab的区别

    在Linux系统中,定时任务是自动化运维不可或缺的一部分,它允许我们按照预设的时间表执行一系列命令或脚本。本文将探讨两种常见的配置定时任务的方法:使用`crontab -e`命令和直接编辑`/etc/crontab`文件,以及它们...

    linux crontab 详解

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

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    总结,ThinkPHP 5.1的定时任务功能结合Crontab,让开发者能轻松实现后台任务自动化,极大地提升了工作效率。正确配置和使用Crontab,可以确保任务按预期执行,同时保持系统的稳定运行。通过理解和实践上述步骤,你将...

    crontab-master

    总结,`crontab` 是 Linux 系统中不可或缺的定时任务工具,通过合理配置,可以自动化完成很多日常维护和管理工作。`crontab-master` 提供的相关资源,对于理解和应用 `crontab` 将大有裨益。通过深入学习和实践,...

    linux10-时间任务,nfs

    Linux 时间任务 nfs Linux 时间任务是指操作系统中执行...Linux 时间任务服务是 Linux 操作系统中的一种重要机制,能够提高系统的自动化和批量化处理能力,减少人工干预和错误的可能性,提高系统的安全性和可靠性。

    linux 定时任务 crontab 详细解释

    ### Linux定时任务Crontab详解 ...总之,Cron服务及其`crontab`命令是Linux系统中非常强大的工具,合理利用它们可以极大地提高系统的自动化水平。希望本文能够帮助读者更好地理解和使用Cron作业。

    suse linux crontab 任务计划 sh文件不能执行分析

    在Linux系统中,`crontab` 是一个强大的任务调度工具,用于自动化周期性的系统或用户任务。然而,有时我们可能会遇到这样的问题:在终端中能够正常运行的shell脚本(`.sh` 文件),在通过`crontab` 安排时却无法执行...

    Linux定时执行程序--Crontab借鉴.pdf

    Linux定时执行程序,尤其是通过Crontab实现自动化任务,是一种常用的方法来确保系统按照特定的时间间隔执行特定的任务。Crontab是Unix/Linux操作系统中的一个守护进程,它允许用户定义一系列的任务,这些任务会在...

    OS + linux crontab / top / ntpdate / nmon

    `crontab` 负责自动化任务,`top` 实时监控系统状态,`ntpdate` 确保时间准确性,而 `nmon` 则提供深入的系统性能分析。熟悉并熟练使用这些工具,对于提升 Linux 系统管理效率和解决系统问题具有极大的帮助。

    Linux系统计划任务crontab命令简单介绍linux操作系统电脑资料.doc

    Linux系统计划任务crontab命令是Linux操作系统中的一种常用工具,用于实现自动化任务调度。crontab命令可以让用户设定在某个特定时间执行某个命令或脚本,从而实现自动化任务的执行。 crontab命令的基本使用方法: ...

    crontab离线包.zip

    通过熟练掌握`crontab`的使用,你可以创建复杂的定时任务计划,提升服务器维护效率,实现自动化运维。记住,合理的任务调度可以避免在非工作时间打扰到服务器的正常运行,同时确保关键任务能够按计划进行。因此,...

    Linux使用at和crontab命令在指定时间计划任务服务程序.doc

    总之,Linux的at和crontab是系统管理员的重要工具,它们使自动化任务执行成为可能,减少了手动操作的需求,提升了运维效率。正确理解和使用这两个命令,可以帮助你更好地管理Linux系统,实现服务的自动化启停,执行...

    Ubuntu-使用crontab定时任务

    通过上述介绍,我们可以看到 crontab 在 Ubuntu 中的强大功能和灵活性,它不仅能够帮助我们自动化日常管理任务,还提供了丰富的配置选项以适应不同的需求。掌握 crontab 的使用方法对于提高系统的自动化管理水平至关...

    linux定时任务命令之crontab

    Crontab是Linux系统中一项强大的功能,它可以帮助用户实现任务的自动化处理。通过理解`/etc/crontab`文件、`/etc/cron.deny`和`/etc/cron.allow`文件的作用,以及掌握crontab的基本命令语法和使用方法,用户可以高效...

    crontab使用方法crontab使用方法

    ### Crontab 使用方法详解 #### 一、概述 ...通过以上介绍,我们可以看出Cron是一个非常强大的工具,能够让用户轻松地管理自动化任务。掌握好Cron的使用方法,对于提高工作效率和减少维护成本都是非常有益的。

Global site tag (gtag.js) - Google Analytics