﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-table-文章分类-linux</title><link>http://www.blogjava.net/table/category/38556.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 25 Apr 2009 04:34:10 GMT</lastBuildDate><pubDate>Sat, 25 Apr 2009 04:34:10 GMT</pubDate><ttl>60</ttl><item><title>windows定时执行PHP</title><link>http://www.blogjava.net/table/articles/262108.html</link><dc:creator>小卓</dc:creator><author>小卓</author><pubDate>Thu, 26 Mar 2009 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/table/articles/262108.html</guid><wfw:comment>http://www.blogjava.net/table/comments/262108.html</wfw:comment><comments>http://www.blogjava.net/table/articles/262108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/table/comments/commentRss/262108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/table/services/trackbacks/262108.html</trackback:ping><description><![CDATA[&nbsp;相信不少读者（PHP爱好者）在工作、学习的过程中经常抱怨：在WIN如何让PHP定时自动发信呢？？如何让MYSQL实现自动备份而无后顾之忧呢？如果完全依靠手工进行当然也可以实现，但操作上似乎过于繁琐了一点！别着急，利用系统的任务计划程序(Windows 98称之为计划任务)可轻易解决这一问题。这一功能往往被很多用户忽略或者未曾想到：）。<br />
<br />
&nbsp; &nbsp; 所谓任务计划就是由计算机自动调用用户事先设置好的应用程序，从而达到简化用户操作的目的。利用Windows 2000的任务计划程序（相当与*NIX下的cron程序，这里不再对其详述），我们可以安排任何脚本、程序或文档在最恰当的时候运行，从而满足自己的需 要。下面以Windows 2000为例。<br />
<br />
&nbsp; &nbsp; 具体来说，我们若需利用任务计划程序自动运行则应执行如下步骤：<br />
<br />
1.单击&#8220;开始&#8221;按钮，然后依次选择&#8220;程序&#8221;&#8594;&#8220;附件&#8221;&#8594;&#8220;系统工具&#8221;&#8594;&#8220;任务计划&#8221;（或者是&#8220;设置&#8221;&#8594;&#8220;控制面板&#8221;&#8594;&#8220;任务计划&#8221;），启动Windows 2000的任务计划管理程序。<br />
<br />
2.在&#8220;任务计划&#8221;窗口中双击&#8220;添加任务计划&#8221;图标，启动系统的&#8220;任务计划向导&#8221;，然后单击&#8220;下一步&#8221;按钮，在给出的程序列表中选择需要自动运行的应用程序，然后单击&#8220;下一步&#8221;按钮。<br />
&nbsp; &nbsp; 设置适当的任务计划名称并选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等)，然后单击&#8220;下一步&#8221;按钮。<br />
&nbsp; &nbsp; 此时系统将会要求用户对程序运行的具体时间进行设置，如几号、几点钟、哪几个时间段才能运行等，我们只需根据自己的需要加以设置即可。<br />
<br />
4.接下来系统将会要求用户设置适当的用户名及密码(如图5所示)，以便系统今后能自动加以运行。<br />
<br />
5.最后，我们只需单击&#8220;完成&#8221;按钮即可将相应任务添加到Windows 2000的任务计划程序中，此后它就会自动&#8220;记住&#8221;这个任务，一旦系统时间及相关条件与用户设置的计划相符，它就会自动调用用户所指定的应用程序，十分方 便(每次启动Windows 2000的时候，任务计划程序都会自动启动，并在后台运行，确保用户的计划能够按时执行)。<br />
<br />
&nbsp; &nbsp; 现在我们来测试一下刚才所建的任务是否成功，鼠标右键单击&#8220;php&#8221;程序图标(如图6所示)，在弹出的菜单里面选择&#8220;运行&#8221;。一般情况下程序图标只要这样 激活运行就可以正常启动。如果运行失败可查看用户和密码是否设置正确，还有确定&#8220;Task Scheduler&#8221;服务是否已启动，本人当初就是为了节省系统资源把它关掉了导致运行失败，害我找了大半天。另外也可从&#8220;系统日志&#8221;里查看到底是什么原 因造成运行失败的。<br />
<br />
&nbsp; &nbsp; 好了，讲了这么多任务计划的应用，现在我们切入正题，下面将介绍两个例子：<br />
<br />
一、让PHP定时运行吧！<br />
1、&nbsp; &nbsp;编辑如下代码，并保存为test.php：<br />
&lt;?php <br />
$fp = @fopen("test.txt", "a+"); <br />
fwrite($fp, date("Y-m-d H:i:s") . " 让PHP定时运行吧！\n"); <br />
fclose($fp); <br />
?&gt;<br />
<br />
2、添加一个任务计划，在(如图2所示)这一步输入命令：D:\php4\php.exe -q D:\php4\test.php<br />
<br />
3、时间设置为每隔1分钟运行一次，然后运行这个任务。<br />
<br />
4、现在我们来看看d:\php4\test.txt文件的内容时候是否成功。如果内容为如下所示，那么恭喜你成功了。<br />
<br />
2003-03-03 11:08:01 让PHP定时运行吧！<br />
2003-03-03 11:09:02 让PHP定时运行吧！<br />
2003-03-03 11:10:01 让PHP定时运行吧！<br />
2003-03-03 11:11:02 让PHP定时运行吧！<br />
<br />
二、让MYSQL实现自动备份变成可能！<br />
1、编辑如下代码，并保存为backup.php，如果要压缩可以拷贝一个rar.exe：<br />
&lt;?php <br />
if ($argc != 2 || in_array($argv[1], array("--help", "-?"))) { <br />
?&gt; <br />
backup&nbsp;&nbsp;Ver 0.01, for Win95/Win98/WinNT/Win2000/WinXP on i32 <br />
Copyright (C) 2000 ptker All rights reserved. <br />
This is free software,and you are welcome to modify and redistribute it <br />
under the GPL license <br />
<br />
PHP Shell script for the backup MySQL database. <br />
<br />
Usage: &lt;?php echo $argv[0]; ?&gt; &lt;option&gt; <br />
<br />
&nbsp;&nbsp;&lt;option&gt; can be database name you would like to backup. <br />
&nbsp;&nbsp;With the --help, or -? options, you can get this help and exit. <br />
&lt;?php <br />
} else { <br />
&nbsp; &nbsp; $dbname = $argv[1]; <br />
&nbsp; &nbsp; $dump_tool = "c:\\mysql\\bin\\mysqldump"; <br />
&nbsp; &nbsp; $rar_tool = "d:\\php4\\rar"; <br />
&nbsp; &nbsp; @exec("$dump_tool --opt -u user -ppassword $dbname &gt; ./$dbname.sql"); <br />
&nbsp; &nbsp; @exec("$rar_tool a -ag_yyyy_mm_dd_hh_mm $dbname.rar $dbname.sql"); <br />
&nbsp; &nbsp; @unlink("$dbname.sql"); <br />
&nbsp; &nbsp; echo "Backup complete!"; <br />
} <br />
?&gt;<br />
<br />
2、添加一个任务计划，在(如图2所示)这一步输入命令：<br />
&nbsp; &nbsp;D:\php4\php.exe -q D:\php4\backup.php databasename<br />
3、时间设置为每天运行一次，然后运行这个任务。<br />
4、最后会在d:\php4\目录下生成一个以数据库名和当前时间组成的rar文件。<br />
5、恭喜你！大功告成了！<br />
&nbsp; &nbsp; 当然备份方式有很多种，读者可按照自己喜欢的去做！<br />
<br />
<br />
<br />
以上是原著.结合本人实贱,补充说明如下:<br />
<br />
1. 如果出现错误:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在试着设置任务帐户信息时出现错误<br />
　　　指定的错误是：<br />
　　　0x80070005:拒绝访问<br />
　　　您没有运行所请求的操作的权限 <br />
<br />
在上面""4<font size="3"><span style="font-size: 9pt">.</font><font color="#000000" size="3">接下来系统将会要求用户设置适当的用户名及密码(如图5所示)，以便系统今后能自动加以运行</font></span><font color="#000000">"</font>.这里最好用"system"用户,密码可为空.如图:<br />
<br />
<a href="http://img.pconline.com.cn/images/bbs4/20061/15/1137331102733.JPG" target="_blank"></a>
<p align="center"><img src="http://pic.arkoo.com/oyoung/picture/2007325123246.jpg"  alt="" /></p>
<br />
<br />
这个system的权限非常之高,比你的administrator还要高,所以你在运行命令的时候千万不要乱来,这个可是什么提示都没有就会无条件执行的,这个权限下你kill核心进程都行. <br />
<br />
2.上面"""<font size="3"><span style="font-size: 9pt">2、添加一个任务计划，在(如图2所示)这一步输入命令：D:\php4\php.exe -q D:\php4\test.php</span>",正确形式应为&nbsp; </font><span style="font-size: 9pt"><font size="3">""D:\php4\php.exe"" -q ""D:\php4\test.php"</font>"&nbsp; ,即路径要用双引号括住.</span><br />
<img src ="http://www.blogjava.net/table/aggbug/262108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/table/" target="_blank">小卓</a> 2009-03-26 14:04 <a href="http://www.blogjava.net/table/articles/262108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 定时处理 crontab使用祥解</title><link>http://www.blogjava.net/table/articles/262106.html</link><dc:creator>小卓</dc:creator><author>小卓</author><pubDate>Thu, 26 Mar 2009 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/table/articles/262106.html</guid><wfw:comment>http://www.blogjava.net/table/comments/262106.html</wfw:comment><comments>http://www.blogjava.net/table/articles/262106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/table/comments/commentRss/262106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/table/services/trackbacks/262106.html</trackback:ping><description><![CDATA[<p>名称 : crontab <br />
使用权限 : 所有使用者 <br />
使用方式 : <br />
crontab [ -u user ] file <br />
crontab [ -u user ] { -l | -r | -e } <br />
说明 : <br />
crontab 是用来让使用者在固定时间或固定间隔执行程序之用，换句话说，也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表，这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话，就是表示设定自己的时程表。 <br />
<br />
参数 : <br />
crontab -e : 执行文字编辑器来设定时程表，内定的文字编辑器是 VI，如果你想用别的文字编辑器，则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) <br />
crontab -r : 删除目前的时程表 <br />
crontab -l : 列出目前的时程表 <br />
crontab file [-u user]-用指定的文件替代目前的crontab。<br />
时程表的格式如下 : <br />
f1 f2 f3 f4 f5 program <br />
其中 f1 是表示分钟，f2 表示小时，f3 表示一个月份中的第几日，f4 表示月份，f5 表示一个星期中的第几天。program 表示要执行的程序。 <br />
当 f1 为 * 时表示每分钟都要执行 program，f2 为 * 时表示每小时都要执行程序，其馀类推 <br />
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行，f2 为 a-b 时表示从第 a 到第 b 小时都要执行，其馀类推 <br />
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次，f2 为 */n 表示每 n 小时个时间间隔执行一次，其馀类推 <br />
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行，f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行，其馀类推 <br />
使用者也可以将所有的设定先存放在档案 file 中，用 crontab file 的方式来设定时程表。 </p>
<p>例子 : <br />
#每天早上7点执行一次 /bin/ls : <br />
0 7 * * * /bin/ls <br />
在 12 月内, 每天的早上 6 点到 12 点中，每隔3个小时执行一次 /usr/bin/backup : <br />
0 6-12/3 * 12 * /usr/bin/backup <br />
周一到周五每天下午 5:00 寄一封信给 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#108;&#101;&#120;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#110;&#97;&#109;&#101;">alex@domain.name</a> : <br />
0 17 * * 1-5 mail -s "hi" <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#108;&#101;&#120;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#110;&#97;&#109;&#101;">alex@domain.name</a> &lt; /tmp/maildata <br />
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" <br />
20 0-23/2 * * * echo "haha" <br />
注意 : <br />
当程序在你所指定的时间执行后，系统会寄一封信给你，显示该程序执行的内容，若是你不希望收到这样的信，请在每一行空一格之后加上 &gt; /dev/null 2&gt;&amp;1 即可</p>
<p>例子2 :<br />
#每天早上6点10分 <br />
10 6 * * * date <br />
#每两个小时 <br />
0 */2 * * * date <br />
#晚上11点到早上8点之间每两个小时，早上8点 <br />
0 23-7/2，8 * * * date <br />
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 <br />
0 11 4 * mon-wed date <br />
#1月份日早上4点 <br />
0 4 1 jan * date <br />
范例 <br />
$crontab -l 列出用户目前的crontab.</p>
&nbsp;crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件，这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 <br />
<br />
crontab命令有三种形式的命令行结构： <br />
<br />
crontab&nbsp;[-u&nbsp;user]&nbsp;[file] <br />
<br />
crontab&nbsp;[-u&nbsp;user]&nbsp;[-e|-l|-r] <br />
<br />
crontab&nbsp;-l&nbsp;-u&nbsp;[-e|-l|-r]&nbsp;第一个命令行中，file是命令文件的名字。如果在命令行中指定了这个文件，那么执行crontab命令，则将这个文件拷贝到crontabs目录下；如果在命令行中没有制定这个文件，crontab命令将接受标准输入（键盘）上键入的命令，并将他们也存放在crontab目录下。 <br />
<br />
命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab； <br />
<br />
命令行中-l选项的作用是显示用户crontab文件的内容。 <br />
<br />
使用命令crontab&nbsp;-u&nbsp;user&nbsp;-e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。 <br />
<br />
执行命令crontab&nbsp;-u&nbsp;user&nbsp;-r即可删除当前用户的所有的cron作业。 <br />
<br />
作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名，在相应的文件中存放着该用户所要运行的命令。命令执行的结果，无论是标准输出还是错误输出，都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值，指定何时开始工作，第六个域是字符串，称为命令字段，其中包括了crontab调度执行的命令。 <br />
<br />
第一道第五个字段的整数取值范围及意义是： <br />
<br />
0～59&nbsp;表示分 <br />
<br />
1～23&nbsp;表示小时 <br />
<br />
1～31&nbsp;表示日 <br />
<br />
1～12&nbsp;表示月份 <br />
<br />
0～6&nbsp;表示星期（其中0表示星期日） <br />
<br />
/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在，而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先，如果都不存在，只有超级用户可以安排作业。
 <img src ="http://www.blogjava.net/table/aggbug/262106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/table/" target="_blank">小卓</a> 2009-03-26 13:42 <a href="http://www.blogjava.net/table/articles/262106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>