<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>成刚网志 &amp;amp;&amp;amp; CBolg Application</title>
<link>http://www.chenggang.net</link>
<description><![CDATA[记录我的网事历程，架起沟通的桥梁！欢迎留言！
]]></description>
<lastBuildDate>Sun, 20 May 2012 22:43:39 +0800</lastBuildDate>
<copyright>Copyright &amp;copy; 2012 by CBolg Application.</copyright>
<language>zh-cn</language>
<pubDate>Mon, 21 May 2012 14:58:43 +0800</pubDate>
<item>
<title>crontab配置</title>
<summary><![CDATA[<p>cron 是linux的内置服务，可以用以下的方法启动、关闭这个服务：<br />引用:<br />/sbin/service crond start //启动服务<br />/sbin/service crond stop //关闭服务<br />/sbin/service crond restart //重启服务<br />/sbin/service crond reload //重新载入配置<br />/etc/rc.d/init.d/crond start</p><p>/etc/rc.d/i]]></summary>
<description><![CDATA[<p>cron 是linux的内置服务，可以用以下的方法启动、关闭这个服务：<br />引用:<br />/sbin/service crond start //启动服务<br />/sbin/service crond stop //关闭服务<br />/sbin/service crond restart //重启服务<br />/sbin/service crond reload //重新载入配置<br />/etc/rc.d/init.d/crond start</p><p>/etc/rc.d/init.d/crond stop<br />你也可以将这个服务在系统启动的时候也自动启动：<br />引用:<br />在/etc/rc.d/rc.local这个脚本的末尾加上：<br />/sbin/service crond start<br /><br />现在cron这个服务已经在进程里面了，我们就可以用这个服务了，cron服务提供以下几种接口供大家使用：<br /><a name="readmore"></a><br />1.直接用crontab命令编辑<br />cron服务提供crontab命令来设定cron服务的，以下是这个命令的一些参数与说明：<br />引用:<br />crontab -u //设定某个用户的cron服务，一般root用户在执行这个命令的时候需要此参数<br />crontab -l //列出某个用户cron服务的详细内容<br />crontab -r //删除没个用户的cron服务<br />crontab -e //编辑某个用户的cron服务<br /><br />比如说root查看自己的cron设置：<br />引用:<br />crontab -u root -l<br /><br />再例如，root想删除fred的cron设置：<br />引用:<br />crontab -u fred -r<br /><br />在编辑cron服务时，编辑的内容有一些格式和约定，输入：<br />引用:<br />crontab -u root -e<br /><br />进入vi编辑模式，编辑的内容一定要符合下面的格式：<br />引用:<br />*/1(分钟） *（小时） *（日期） *（月份） *（星期） ls（执行的脚本或者命令） &gt;&gt; /tmp/ls.txt</p><div>每一分钟执行一次：</div><div>1 * * * * /bin/echo ***********************hello****************<br /><br />这个格式的前一部分是对时间的设定，后面一部分是要执行的命令，如果要执行的命令太多，可以把这些命令写到一个脚本里面，然后在这里直接调用这个脚本就可以了，调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定，前面五个*号代表五个数字，数字的取值范围和含义如下：<br />引用:<br />分钟　（0-59）<br />小時　（0-23）<br />日期　（1-31）<br />月份　（1-12）<br />星期　（0-6）//0代表星期天<br /><br />除了数字还有几个个特殊的符号就是&quot;*&quot;、&quot;/&quot;和&quot;-&quot;、&quot;,&quot;，*代表所有的取值范围内的数字，&quot;/&quot;代表每的意思,&quot;*/5&quot;表示每5个单位，&quot;-&quot;代表从某个数字到某个数字,&quot;,&quot;分开几个离散的数字。以下举几个例子说明问题：<br />引用:<br />每天早上6点<br />0 6 * * * echo &quot;Good morning.&quot; &gt;&gt; /tmp/test.txt //注意单纯echo，从屏幕上看不到任何输出，因为cron把任何输出都email到root的信箱了。<br /><br />每两个小时<br />0 */2 * * * echo &quot;Have a break now.&quot; &gt;&gt; /tmp/test.txt<br /><br />晚上11点到早上8点之间每两个小时，早上八点<br />0 23-7/2，8 * * * echo &quot;Have a good dream：）&quot; &gt;&gt; /tmp/test.txt<br /><br />每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点<br />0 11 4 * 1-3 command line<br /><br />1月1日早上4点<br />0 4 1 1 * command line<br /><br />每次编辑完某个用户的cron设置后，cron自动在/var/spool/cron下生成一个与此用户同名的文件，此用户的cron信息都记录在这个文件中，这个文件是不可以直接编辑的，只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件，检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。<br /><br />2.编辑/etc/crontab 文件配置cron<br />cron服务每分钟不仅要读一次/var/spool/cron内的所有文件，还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的，而编辑/etc/crontab是针对系统的任务。此文件的文件格式是：<br />引用:<br />SHELL=/bin/bash<br />PATH=/sbin:/bin:/usr/sbin:/usr/bin<br />MAILTO=root //如果出现错误，或者有数据输出，数据作为邮件发给这个帐号<br />HOME=/<br /># run-parts<br />01 * * * * root run-parts /etc/cron.hourly //每个小时去执行一遍/etc/cron.hourly内的脚本<br />02 4 * * * root run-parts /etc/cron.daily //每天去执行一遍/etc/cron.daily内的脚本<br />22 4 * * 0 root run-parts /etc/cron.weekly //每星期去执行一遍/etc/cron.weekly内的脚本<br />42 4 1 * * root run-parts /etc/cron.monthly //每个月去执行一遍/etc/cron.monthly内的脚本<br />使用者 运行的路径<br /><br />大家注意&quot;run-parts&quot;这个参数了，如果去掉这个参数的话，后面就可以写要运行的某个脚本名，而不是文件夹名了。<br /><br /><br /><br />如果你还不太明白，看下面的内容：<br /><br />cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。<br /><br />cron 假定系统持续运行。如果当某任务被调度时系统不在运行，该任务就不会被执行。<br /><br />要使用 cron 服务，你必须安装了 vixie-cron RPM 软件包，而且必须在运行 crond 服务。要判定该软件包是否已安装，使用 rpm -q vixie-cron 命令。要判定该服务是否在运行，使用 /sbin/service crond status 命令。<br /><br />cron 的主配置文件是 /etc/crontab，它包括下面几行：<br />代码:<br /><br />SHELL=/bin/bash<br />PATH=/sbin:/bin:/usr/sbin:/usr/bin<br />MAILTO=root<br />HOME=/<br /><br /># run-parts<br />01 * * * * root run-parts /etc/cron.hourly<br />02 4 * * * root run-parts /etc/cron.daily<br />22 4 * * 0 root run-parts /etc/cron.weekly<br />42 4 1 * * root run-parts /etc/cron.monthly<br /><br />前四行是用来配置 cron 任务运行环境的变量。 SHELL 变量的值告诉系统要使用哪个 shell 环境（在这个例子里是 bash shell）；PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串（MAILTO=&quot;&quot;），电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。<br /><br />/etc/crontab 文件中的每一行都代表一项任务，它的格式是：<br /><br />代码:<br />minute hour day month dayofweek command<br /><br /><br />*<br /><br />minute &mdash; 分钟，从 0 到 59 之间的任何整数<br />*<br /><br />hour &mdash; 小时，从 0 到 23 之间的任何整数<br />*<br /><br />day &mdash; 日期，从 1 到 31 之间的任何整数（如果指定了月份，必须是该月份的有效日期）<br />*<br /><br />month &mdash; 月份，从 1 到 12 之间的任何整数（或使用月份的英文简写如 jan、feb 等等）<br />*<br /><br />dayofweek &mdash; 星期，从 0 到 7 之间的任何整数，这里的 0 或 7 代表星期日（或使用星期的英文简写如 sun、mon 等等）<br />*<br /><br />command &mdash; 要执行的命令（命令可以是 ls /proc &gt;&gt; /tmp/proc 之类的命令，也可以是执行你自行编写的脚本的命令。）<br /><br />在以上任何值中，星号（*）可以用来代表所有有效的值。譬如，月份值中的星号意味着在满足其它制约条件后每月都执行该命令。<br /><br />整数间的短线（-）指定一个整数范围。譬如，1-4 意味着整数 1、2、3、4。<br /><br />用逗号（,）隔开的一系列值指定一个列表。譬如，3, 4, 6, 8 标明这四个指定的整数。<br /><br />正斜线（/）可以用来指定间隔频率。在范围后加上 /&lt;integer&gt; 意味着在范围内可以跳过 integer。譬如，0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如，*/3 的值可以用在月份字段中表示每三个月运行一次任务。<br /><br />开头为井号（#）的行是注释，不会被处理。<br /><br />如你在 /etc/crontab 文件中所见，它使用 run-parts 脚本来执行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本，这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。<br /><br />如果某 cron 任务需要根据调度来执行，而不是每小时、每日、每周、或每月地执行，它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。如下：<br />代码:<br /><br /># record the memory usage of the system every monday<br /># at 3:30AM in the file /tmp/meminfo<br />30 3 * * mon cat /proc/meminfo &gt;&gt; /tmp/meminfo<br /># run custom script the first day of every month at 4:10AM<br />10 4 1 * * /root/scripts/backup.sh<br /><br />根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中，并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目，登录为该用户，然后键入 crontab -e 命令，使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后，该 crontab 文件就会根据该用户名被保存，并写入文件 /var/spool/cron/username 中。<br /><br />cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变，它们就会被载入内存。这样，当某个 crontab 文件改变后就不必重新启动守护进程了。<br /><br />/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了，cron 守护进程（crond）不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。<br /><br /><span style="color: #ff0000">无论使用控制文件中的规定如何，根用户都总是可以使用 cron。<br /><br />如果 cron.allow 文件存在，只有其中列出的用户才被允许使用 cron，并且 cron.deny 文件会被忽略。<br /><br />如果 cron.allow 文件不存在，所有在 cron.deny 中列出的用户都被禁止使用 cron。<br /><br /></span>要启动 cron 服务，使用 /sbin/service crond start 命令。要停止该服务，使用 /sbin/service crond stop 命令。推荐你在引导时启动该服务。<br /><br />增加CRON的工作<br />当我们决定要在系统上定期执行某个命令，我们必须将这个要执行的命令定义成一个CRON工作，可以直接将要建立的CRON工作定义在CRONTAB设置文件中，设置该命令执行的时机；或者也可以利用CRON会定时执行/ETC/CROM.*目录SCRIPT的特性，将要执行的命令建立成为一个脚本文档，放置在该目录下，并且注意它的权限--必须可以执行！</div>]]></description>
<link>http://www.chenggang.net/posts/90</link>
<pubDate>Thu, 02 Jul 2009 12:16:09 +0800</pubDate>
<author>admin</author>
<category>Linux</category>
<guid isPermaLink="true">http://www.chenggang.nethttp://www.chenggang.net/posts/90</guid>
</item>
</channel></rss>
