<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[crontab详解,At命令在指定的时间运行作业]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 19 Jan 2011 07:23:11 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/>Linux crontab详解&nbsp;&nbsp;　cron来源于希腊单词chronos（意为“时间”），是linux系统下一个自动执行指定任务的程序。例如，你想在每晚睡觉期间创建某些文件或文件 夹的备份，就可以用cron来自动执行。服务的启动和停止cron服务是linux的内置服务，但它不会开机自动启动。可以用以下命令启动和停止服务：<br/><br/>　　/sbin/service crond start<br/><br/>　　/sbin/service crond stop<br/><br/>　　/sbin/service crond restart<br/><br/>　　/sbin/service crond reload<br/><br/>　　以上1-4行分别为启动、停止、重启服务和重新加载配置。<br/><br/>　　要把cron设为在开机的时候自动启动，在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。<br/><br/>　　查看、编辑和删除cron把命令行保存在crontab（cron table）文件里，这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab（在 /var/spool/cron/ 下）。<br/><br/>　　要查看当前用户的crontab，输入 crontab -l；<br/><br/>　　要编辑crontab，输入 crontab -e；<br/><br/>　　要删除crontab，输入 crontab -r。<br/><br/>　　如当前是root身份，要查看/编辑/删除/某用户的crontab，只需在相应的命令后加上 -u USERNAME（如 crontab -e -u USERNAME）即可。<br/><br/>　　crontab文件的默认编辑器是vi，可以输入 export VISUAL=’editor’ 更改默认编辑器。<br/><br/>　　cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件，还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置，而编辑 /etc/crontab 文件是对系统级任务的配置。<br/><br/>　　语法说明<br/><br/>　　以下是两个cron语句的例子（在 /etc/crontab 文件里）。前者用来晚间备份 /etc 目录，后者运行Analog程序处理服务器的统计信息。<br/><br/>　　12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　52 5 * * * root /usr/local/src/analog-5.32-lh/analog &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　以下是cron语句中的字段与字段说明：<br/><br/>　　字段说明<br/><br/>　　1分钟（0-59）<br/><br/>　　2小时（2-24）<br/><br/>　　3日期（1-31）<br/><br/>　　4月份（1-12；或英文缩写Jan、Feb等）<br/><br/>　　5周几（0-6，0为周日；或单词缩写Sun、Mon等）<br/><br/>　　6用户名（执行命令时以此用户的身份）<br/><br/>　　7要执行的命令（路径）<br/><br/>　　现在来看第一行：12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　这条语句将在每天的凌晨3点12分（03:12）运行<br/><br/>　　tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。&gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　表示把所有标准输出发送到 /dev/null（linux的回收站），把标准错误输出（2）发送到和标准输出（1）同样的地方（即 /dev/null）。运行这行命令将不会产生任何输出。<br/><br/>　　这条语句可以变得稍微复杂一点：<br/><br/>　　30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　它将在6月13日周一的15:30运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。<br/><br/>　　以下语句可以达到同样的效果：30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　如果你想以用户joey的身份每小时的第15分钟运行某个程序，可以使用：<br/><br/>　　15 * * * * joey /usr/bin/somecommand &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　其中的星号（*）是通配符，表示cron将忽略这个字段。<br/><br/>如果你想每两小时就运行某个程序，可以在小时字段里使用 */2。<br/><br/>　　它将会在2点，4点，6点……22点，24点运行。<br/><br/>　　具体语句如下：0 */2 * * * joey /usr/bin/somecommand &gt;&gt; /dev/null 2&gt;&amp;1cron<br/><br/>　　语句中还可以使用逗号（,）来指定多个时间。<br/><br/>　　例如你想在每小时的15分和30分运行某个程序，可以在分钟字段使用<br/><br/>　　15,30：15,30 * * * * joey /usr/bin/somecommand &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　如果你想在每月的第一周（即1号到7号）每天的指定时间运行某个程序，可以在日期字段使用 1-7：15,30 */2 1-7 * * joey /usr/bin/somecommand &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　这条语句将在每月的第1-7日每两小时的15分和30分（02:15，02:30……22: 15，22:30等）运行 /usr/bin/somecommand 命令。<br/><br/>　　如果你想在每天的16:18执行一个脚本集合，可以把所有要执行的脚本放到一个目录中（如 /home/username/cron），可以使用：<br/><br/>　　18 16 * * * root run-parts /home/username/cron &gt;&gt; /dev/null 2&gt;&amp;1<br/><br/>　　如果你想保存某个程序的输出结果， 可以把 &gt;&gt; /dev/null 2&gt;&amp;1 替换为 &gt;&gt; /home/user/somecommand.log 2&gt;&amp;1 。<br/><br/>　　总结<br/><br/>　　查看当前用户的cron配置，使用 crontab -l<br/><br/>　　编辑当前用户的cron配置，使用 crontab -e<br/><br/>　　删除当前用户的cron配置，使用 crontab -r<br/><br/>　　以root身份查看/编辑/删除某用户的cron配置，在命令后加上 -u USERNAME 配置系统级的任务，编辑 /etc/crontab 文件<br/><br/>　　Linux crontab详解<br/><br/>　　Cron是一个linux下的定时执行工具。<br/><br/>　　一、Cron 是Linux的内置服务，可以用以下的方法启动、关闭、重启服务：<br/><br/>　　/sbin/service crond start //启动服务<br/><br/>　　/sbin/service crond stop //关闭服务<br/><br/>　　/sbin/service crond restart //重启服务<br/><br/>　　/sbin/service crond reload //重新载入配置<br/><br/>　　你也可以将这个服务在系统启动的时候自动启动：<br/><br/>　　在/etc/rc.d/rc.local这个脚本的末尾加上：<br/><br/>　　/sbin/service crond start<br/><br/>　二、直接用crontab命令编辑<br/><br/>　　cron服务提供crontab命令来设定cron服务的，以下是这个命令的一些参数与说明：<br/><br/>　　crontab -u //设定某个用户的cron服务，一般root用户在执行这个命令的时候需要此参数<br/><br/>　　crontab -l //列出某个用户cron服务的详细内容<br/><br/>　　crontab -r //删除某个用户的cron服务<br/><br/>　　crontab -e //编辑某个用户的cron服务<br/><br/>　　例：<br/><br/>　　比如说root查看自己的cron设置：crontab -u root -l<br/><br/>　　再例如，root想删除fred的cron设置：crontab -u fred -r<br/><br/>　　在编辑cron服务时，编辑的内容有一些格式和约定，输入：crontab -u root -e<br/><br/>　　进入vi编辑模式，编辑的内容一定要符合下面的格式：*/1 * * * * ls &gt;&gt; /tmp/ls.txt<br/><br/>　　这个格式的前一部分是对时间的设定，后面一部分是要执行的命令，如果要执行的命令太多，可以把这些命令写到一个脚本里面，然后在这里直接调用这 个脚本就可以了，调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定，前面五个*号代表五个数字，数字的取值范围和含义如下：<br/><br/>　　分钟　（0-59）<br/><br/>　　小时　（0-23）<br/><br/>　　日期　（1-31）<br/><br/>　　月份　（1-12）<br/><br/>　　星期　（0-6）//0代表星期天<br/><br/>　　除了数字还有几个个特殊的符号就是”*”、”/”和”-”、”,”，*代表所有的取值范围内的数字，”/”代表每的意思,”*/5″表示每5个单位，”-”代表从某个数字到某个数字,”,”分开几个离散的数字。以下举几个例子说明问题：<br/><br/>每天早上6点<br/><br/>　　0 6 * * * echo “Good morning.” &gt;&gt; /tmp/test.txt //注意单纯echo，从屏幕上看不到任何输出，因为cron把任何输出都email到root的信箱了。<br/><br/>　　每两个小时<br/><br/>　　0 */2 * * * echo “Have a break now.” &gt;&gt; /tmp/test.txt<br/><br/>　　晚上11点到早上8点之间每两个小时，早上八点<br/><br/>　　0 23-7/2，8 * * * echo “Have a good dream：）” &gt;&gt; /tmp/test.txt<br/><br/>　　每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点<br/><br/>　　0 11 4 * 1-3 command line<br/><br/>　　1月1日早上4点<br/><br/>　　0 4 1 1 * command line<br/><br/>　　每次编辑完某个用户的cron设置后，cron自动在/var/spool/cron下生成一个与此用户同名的文件，此用户的cron信息都记 录在这个文件中，这个文件是不可以直接编辑的，只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件，检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。<br/><br/>　　三、编辑/etc/crontab 文件配置cron<br/><br/>　　cron服务每分钟不仅要读一次/var/spool/cron内的所有文件，还需要读一次/etc/crontab,因此我们配置这个文件也 能运用 cron服务做一些事情。用crontab配置是针对某个用户的，而编辑/etc/crontab是针对系统的任务。此文件的文件格式是：<br/><br/>　　SHELL=/bin/bash<br/><br/>　　PATH=/sbin:/bin:/usr/sbin:/usr/bin<br/><br/>　　MAILTO=root //如果出现错误，或者有数据输出，数据作为邮件发给这个帐号<br/><br/>　　HOME=/ //使用者运行的路径,这里是根目录<br/><br/>　　# run-parts<br/><br/>　　01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本<br/><br/>　　02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本<br/><br/>　　22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本<br/><br/>　　42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本<br/><br/>　　大家注意”run-parts”这个参数了，如果去掉这个参数的话，后面就可以写要运行的某个脚本名，而不是文件夹名了。<br/><br/>　　————————————–<br/><br/>　　基本格式 :<br/><br/>　　*　　*　　*　　*　　*　　command<br/><br/>　　分　时　日　月　周　命令<br/><br/>　　第1列表示分钟1～59 每分钟用*或者 */1表示<br/><br/>　　第2列表示小时1～23（0表示0点）<br/><br/>　　第3列表示日期1～31<br/><br/>　　第4列表示月份1～12<br/><br/>　　第5列标识号星期0～6（0表示星期天）<br/><br/>　　第6列要运行的命令<br/><br/>　　crontab文件的一些例子：<br/><br/>　　30 21 * * * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　上面的例子表示每晚的21:30重启lighttpd 。<br/><br/>　　45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。<br/><br/>　　10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　上面的例子表示每周六、周日的1 : 10重启lighttpd 。<br/><br/>　　0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。<br/><br/>　　0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　上面的例子表示每星期六的11 : 00 pm重启lighttpd 。<br/><br/>　　* */1 * * * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　每一小时重启lighttpd<br/><br/>　　* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　晚上11点到早上7点之间，每隔一小时重启lighttpd<br/><br/>　　0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　每月的4号与每周一到周三的11点重启lighttpd<br/><br/>　　0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart<br/><br/>　　一月一号的4点重启lighttpd<br/>来源：http://www.osseye.com/?p=476<br/><br/><br/>在指定的时间运行作业之at命令<br/>有时候，需要只运行作业一次而不是定期运行。为此，应该使用 at 命令。要运行的命令是从 -f 选项指定的文件读取的，如果没有使用 -f，那么从 stdin 读取。-m 选项向用户发送邮件，即使命令没有 stdout。-v 选项显示运行作业的时间。这个时间也显示在输出中。<br/>清单 5 给出一个运行 mycrontest.sh 脚本的示例。清单 6 显示在运行作业之后通过邮件发送给用户的输出。注意，这里的输出比对应的 cron 作业输出要简单一些。<br/>清单 5. 使用 at 命令<br/>[ian@lyrebird ~]$ at -f mycrontest.sh -v 10:25<br/>Sat Jul&nbsp;&nbsp;7 10:25:00 2007<br/>job 5 at Sat Jul&nbsp;&nbsp;7 10:25:00 2007<br/>清单 6. 来自 at 的作业输出<br/>From ian@lyrebird.raleigh.ibm.com&nbsp;&nbsp;Sat Jul&nbsp;&nbsp;7 10:25:00 2007<br/>Date: Sat, 7 Jul 2007 10:25:00 -0400<br/>From: Ian Shields &lt;ian@lyrebird.raleigh.ibm.com&gt;<br/>Subject: Output from your job&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<br/>To: ian@lyrebird.raleigh.ibm.com<br/>It is now 10:25:00 on Saturday<br/>时间的设置可以非常复杂。清单 7 给出几个示例。参见 at 的手册页、/usr/share/doc/at/timespec 文件或 /usr/share/doc/at-3.1.10/timespec 这样的文件（这个示例中的 3.1.10 是 at 包的版本号）。<br/>清单 7. at 命令使用的时间值<br/>[ian@lyrebird ~]$ at -f mycrontest.sh&nbsp;&nbsp;10pm tomorrow<br/>job 14 at Sun Jul&nbsp;&nbsp;8 22:00:00 2007<br/>[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 tuesday<br/>job 15 at Tue Jul 10 02:00:00 2007<br/>[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 july 11<br/>job 16 at Wed Jul 11 02:00:00 2007<br/>[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 next week<br/>job 17 at Sat Jul 14 02:00:00 2007<br/>nice 值<br/>nice 值表示一个作业对于其他用户的优先程度。关于 nice 和 renice 命令的更多信息，参见教程 “LPI 101 考试准备：GNU 和 UNIX 命令”。<br/>at 命令还有一个 -q 选项。随着队列的增长，作业的 nice 值也会增长。 还有一个 batch 命令，它与 at 命令相似，但是作业只在系统负载足够低时运行。这些特性的细节参见手册页。 <br/><br/>来源 ：http://www.ibm.com/developerworks/cn/linux/l-job-scheduling.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] crontab详解,At命令在指定的时间运行作业]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>