`
zzg
  • 浏览: 123879 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

crontab

    博客分类:
  • Unix
阅读更多
最近工作需要使用定时执行脚本,研究了下crontab,如果不用vi编辑,而是使用windows编辑后ftp上传,需要注意crontab的回车换行符,需要vi中手动删掉。以下是crontab的详细用法。

描述

这个 crontab 命令提交、编辑、列出或除去 cron 作业。一个 cron 作业是一个命令,其运行是由 cron 守护进程在规则的调度间隔执行的。要提交一个 cron 作业,指定 crontab 命令用 -e 标志。crontab 命令调用一个编辑会话,允许创建一个 crontab 文件。在这个文件中,为每个 cron 创建条目。每个条目必须是一种 cron 守护进程可接受的格式。要得到创建条目的信息,参阅 crontab 文件条目格式。

当创建完条目和退出文件后,crontab 命令将它拷贝到 /var/spool/cron/crontabs 目录,并把它放到一个文件中,此文件的名称是当前的用户名。如果以用户名命名的文件已存在于 crontabs 目录中,crontab 命令会覆盖它。

同样的,可以通过指定文件参数创建 crontab 文件。如果此文件已经存在,格式必须是 cron 守护进程所需要的。如果文件不存在,crontab 命令就调用编辑器。如果 EDITOR 环境变量存在,此命令就调用它指定的编辑器。否则,crontab 命令调用 vi 编辑器。

要列出 crontab 文件的内容,就指定 crontab 命令并采用 -l 标志。要除去存在的文件,采用 -r 标志。

可选的 UserName 参数可被 crontab 文件的所有者或者 root 用户来使用,为指定的用户编辑、列出、除去或验证 cron 作业的状态。如果 UserName 是无效的,就会产生错误消息并退出程序。

如果可选的 UserName 参数没有被指定,这个crontab 标志对于 root 用户和当前用户可用。
安全性

只有 root 用户和 crontab 文件的所有者可以在 -e、-l、-r 和 -v 标志后面使用 UserName 以编辑、列出、除去或验证指定用户的 crontab 文件。
cron 守护进程

这个 cron 守护进程运行的命令和 crontab 文件条目是相对应的。如果不重新定向 cron 作业的输出为标准输出或标准错误,cron 守护进程就会通过电子邮件告知您任何命令输出或错误。如果在 crontab 文件中指定了不正确的 cron 作业,这个cron 守护进程不运行这个作业。

cron 守护进程只在 cron 守护进程被初始化时检查 crontab 文件。当用 crontab 命令改变 crontab 文件时,指示变化的消息被发送到 cron 守护进程。这消除了在规则的调度间隔检查新的或改变的文件的开销。
控制使用 crontab 命令

/var/adm/cron/cron.allow 和 /var/adm/cron/cron.deny 文件控制哪一个用户可以使用 crontab 命令。root 用户可以创建、编辑或删除这些文件。这些文件的条目是用户登录名称,每个名称占一行。如果登录标识和多个的登录名称相关联,这个crontab 命令采用第一个在 /etc/passwd 文件中的登录名称,而不管当前实际使用哪一个登录名称。而且,要允许用户启动 cron 作业,应该使用 chuser 命令将 /etc/security/user 文件中的守护进程属性设置为 TRUE。

以下关于 cron.allow 文件的一个示例:

root
nick
dee
sarah

如果 cron.allow 文件存在,只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户,通过使用 crontab 命令,同时在cron.deny 文件中列出用户的登录名。如果只有 cron.deny 文件存在,任一名称没有出现在这个文件中的用户可以使用 crontab 命令。

如果以下一个条件成立,用户将不能使用 crontab 命令:

    * cron.allow 文件和 cron.deny 文件不存在(只允许 root 用户)。
    * cron.allow 文件存在,但用户的登录名并不列在其中。
    * cron.deny 文件存在,并且用户的登录名列在其中。

如果 cron.allow 和 cron.deny 文件都不存在,只有被 root 用户授权的人可以用 crontab 命令提交一个作业。
crontab 文件条目格式

一个 crontab 文件包含每个 cron 作业的条目。条目由换行字符分开。每个 crontab 文件条目包括 6 个字段,它们被空格或制表符以以下格式分开:

 
minute  hour  day_of_month  month  weekday  command

这些字段接收以下值:
minute     0 到 59
hour     0 到 23
day_of_month     1 到 31
month     1 到 12
weekday     0 到 6(星期天到星期六)
command     shell 命令

必须为每个字段指定一个值。除了 command 字段,这些字段可以包含以下内容:

    * 指定范围内的一个数。要在 5 月运行一个命令,在 月 字段指定 5。
    * 两个被破折号分开的数目表明了包含的范围。要从星期二到星期五运行 cron 作业,把 2-5 放到 weekday 字段中。
    * 由逗号隔开的数字列表。要在一月第一天和最后一天的运行命令,在日_of_月 字段中可指定 1,31。
    * * (星号),意味着所有的允许值。要每个小时运行一个作业,在小时字段指定一个星号。

    注: 任一字符前如有一个反斜杠符号(包括 %)会引起字符被字面上的处理。天的规范是由两个字段(月的天和星期的天)组成的。如果指定两者都为元素的一个列表,这两个字段均被包含在其中。例如,如下条目:

    0 0 1,15 * 1 command

    将在每个月的第一天和第十五天运行 command,还有每个星期一。要仅在一个字段中指定天,另一字段应包含 * 。

指定命令

这个 cron 守护进程运行命名于所选日期和时间的第六个字段中的字段。如果包含一个 % (百分号)在第六字段,cron 守护进程像命令调用一样处理所有的任务,并使所有的后续任务在标准输入上可用,除非转义百分号 (\%)。空行和第一个非空字符是编号标记(#)将被忽略。如果命令含有反斜杠 (\) 的参数,反斜杠前应加另一个反斜杠。

注:
shell 只运行该命令字段的第一行。所有其它的行作为标准的输入对于命令可用。

cron 守护进程从 HOME 目录中启动一个子 shell。如果调度一个命令运行,这时您尚未登录,并且希望在.profile 文件中的命令运行,这个命令必须明确的读取您的 .profile 文件。

cron 守护进程为每个 shell 提供了一个缺省的环境,定义了 HOME, LOGNAME, SHELL (=/usr/bin/sh) 和 PATH (=/usr/bin)。
标志

-e UserName     编辑用户的 crontab 文件的拷贝,或者,如果一个有效的 UserName 的 crontab 文件不存在则创建一个空的文件进行编辑。当编辑完成后,文件被拷贝到 crontab 目录作为用户的crontab 文件。
-l UserName     列出用户的 crontab 文件。
-r UserName     从 crontab 目录除去用户的 crontab 文件。
-v UserName     列出用户 cron 作业的状态。
安全性

审计事件:如果审计子系统已经被正确的配置和启用,crontab 守护进程就会当每次执行命令时产生以下审计记录(或事件):
事件     信息
CRON_JobRemove     列出哪一个用户除去了 cron 作业和除去的时间。
CRON_JobAdd     列出哪一个用户添加了 cron 作业和添加的时间。

请参阅《AIX 5L V5.2 安全指南》中的『设置审计』以获取关于如何适当地选择和分组审计事件及如何配置审计事件数据集合的详细信息。
退出状态

此命令返回以下退出值:
0     成功完成。
>0     发生错误。
示例

   1. 拷贝一个名为 mycronjobs 的文件,到 /var/admn/cron/crontabs 目录下,输入以下内容:

      crontab mycronjobs

   2. 将时间以小时的形式把每个小时写到 console 中,输入:

      0 * * * * echo The hour is `date` 。
      >/dev/console

   3. 要在每个星期一、星期三和星期五的 6:30 a.m. 运行 calendar 命令,输入:

      30 6 * * 1,3,5 /usr/bin/calendar

   4. 要在一年的每一天的 6:30 运行 calendar 命令,输入:

      30 6 * * * /usr/bin/calendar

   5. 要在八月的每天午夜运行一个称为 maintenance 的脚本,输入:

      0 0 * 8 * /u/harry/bin/maintenance

   6. 为命令的标准输入定义文本,输入:

      0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to
      turn in your time card.

      在 %(百分号)之后定义 wall 命令的标准输入的文本:

      HAPPY HOLIDAY!
      
      Remember to turn in your time card.

文件

/var/adm/cron/FIFO     当新的作业的提交是由 crontab 或 at 命令完成时,一个发送消息到 cron 守护进程的命名管道。
/var/spool/cron/crontabs     指定 crontab 缓冲池区域。
/var/adm/cron/cron.allow     指定用户列表,这些用户被允许访问 crontab 命令。
/var/adm/cron/cron.deny     指定用户列表,这些用户不被允许访问 crontab 命令。
相关信息

auditpr 命令、sh 命令、wall 命令。

cron 守护进程。
分享到:
评论

相关推荐

    linux C7 crontab离线安装包

    在Linux系统中,Crontab(也称为cron table)是一个非常重要的工具,用于安排周期性的任务,例如定期备份、日志清理、系统维护等。在Linux CentOS 7(C7)环境中,通常使用RPM(Red Hat Package Manager)包管理系统...

    centos7 crontab 安装包

    【标题】:“CentOS7 Crontab安装包” 在Linux系统中,`cron`是一个用于自动化任务调度的强大工具,而`crontab`是管理这些定时任务的命令。在CentOS7环境中,为了使用`crontab`服务,首先需要安装相关的软件包。...

    redhatlinux6 Crontab安装

    在Red Hat Linux 6操作系统中,Crontab是一个不可或缺的工具,它允许用户安排定期的任务,比如备份、日志清理、系统维护等。Crontab的安装涉及两个关键的软件包,分别是`vixie-cron`和`cronie-anacron`。以下是关于...

    x86架构crontab离线rpm安装包以及依赖

    在IT领域,尤其是在服务器管理中,`crontab` 是一个不可或缺的工具,它用于设置周期性的任务调度,比如定期备份、系统维护等。在这个场景中,标题提到的"**x86架构crontab离线rpm安装包以及依赖**"意味着我们将探讨...

    crontab离线包.zip

    在Linux系统管理中,`crontab`是一个不可或缺的工具,它允许系统管理员以及普通用户设置周期性执行的任务。这个“crontab离线包.zip”包含的是与`crontab`相关的软件包,用于在Linux环境中安装和管理任务调度。资源...

    crontab-46.1.tar.gz

    `crontab`是Unix/Linux系统中用于设置周期性被执行任务的命令,它允许用户根据预定义的时间间隔安排任务。在MACOSX上,虽然它不是内置的,但可以通过安装来实现。`crontab-46.1.tar.gz`是一个压缩包文件,包含了源...

    在windows下配置crontab

    【在Windows下配置crontab】的知识点主要集中在如何在Windows环境中使用Cygwin来实现类似于Linux中的计划任务管理。Crontab是Linux和Unix系统中用于管理周期性任务的工具,而在Windows系统中,由于Dos Scripts的功能...

    centos6.9定时任务crontab离线安装包

    在Linux系统中,`crontab` 是一个用于设置周期性被执行的任务的命令,它允许用户根据特定的时间间隔安排任务的执行。在CentOS 6.9这样的旧版本系统中,有时可能会遇到`yum`无法在线获取或更新`crontab`的情况。这...

    Linux定时脚本crontab中文乱码.docx

    Linux 定时脚本 crontab 中文乱码解决方案 Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符...

    Go开发的crontab 代替linux原生crontab.zip

    在嵌入式Linux开发中,经常需要进行定时任务的管理,传统的解决方案是利用Linux的原生`crontab`工具。然而,在某些情况下,如在资源有限的嵌入式设备上,可能需要更轻量级的替代方案。"Go开发的crontab 代替linux...

    crontab离线安装及依赖

    crontab离线安装及依赖rpm包 cronie-1.4.4-16.el6_8.2.x86_64.rpm cronie-anacron-1.4.4-16.el6_8.2.x86_64.rpm crontabs-1.10-33.el6.noarch.rpm cyrus-sasl-2.1.23-15.el6_6.2.x86_64.rpm logrotate-3.7.8-28.el6....

    crontab计划任务的使用方法

    **Crontab计划任务的使用方法** Crontab(cron table)是Unix和类Unix操作系统中的一种调度服务,用于设置周期性执行的任务。它的工作原理是通过守护进程`crond`来激活定时任务,这些任务被称为cron jobs。下面将...

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

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

    crontab命令格式与例子

    ### crontab命令格式与例子解析 #### 一、crontab简介 `crontab` 是 Linux 和 Unix-like 操作系统中一个非常重要的工具,用于设置周期性执行的任务。通过编写 crontab 文件(cron job),用户可以指定某个脚本或...

    Linux crontab 命令格式与详细例子

    ### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令...

    使用linux命令crontab间隔时间执行其它命令

    1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 如: 代码如下:[root@dave ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin...

    Linux中使用crontab自动清除日志

    Linux 中使用 crontab 自动清除日志 Linux 中使用 crontab 自动清除日志是一种常见的日志管理方法。crontab 命令是 Unix 和类 Unix 操作系统中设置周期性被执行的指令的命令。该命令从标准输入设备读取指令,并将其...

    crontab –e使用实操

    Crontab 使用实践 在本文中,我们将详细介绍 Crontab 的使用,并将其与 MySQL 的备份结合,实现自动定时启动 MySQL 备份 shell 脚本。 什么是 Crontab Crontab 是一个在 Unix 和类 Unix 系统中用于计划作业的工具...

    Linux Crontab 定时任务 命令详解

    Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...

    linux 定时任务 crontab 详细解释

    ### Linux定时任务Crontab详解 #### 一、Crontab简介 在Linux系统中,Cron服务是一种用于计划执行任务的工具。它允许用户设置周期性运行的任务,例如自动备份数据、定时发送邮件等。Cron服务的核心是`crontab`命令...

Global site tag (gtag.js) - Google Analytics