为了定期执行,要设置一个 cron 表(称为 crontab),以定义每个命令执行的间隔和顺序。该文件的格式是这样的,每个命令占单独的一行,每行包括六个字段,如下所示:
|
minute hour day month dayofweek command |
应根据以下规则使用数字进行时间指定:
Minute:0-59Hour:0-23Day:1-31Month:1-12Day:0-6(其中 0 是星期日)
对于任何字段,都可以指定单个数字、用逗号分隔的数字列表或星号(指示应匹配任何值)。
通过指定时间,只要匹配当前时间,就会执行命令。例如,通过指定以下时间:0 * * * * do-something,命令将在当前时间的分钟值为 0 时(例如整点时)执行。
而指定以下时间:0 23 * * * do-something,命令将在每晚 11 点时运行。
如果指定多个值,则会对每个值进行匹配。例如,要每 15 分钟执行一次命令,请使用以下语句:
0,15,30,45 * * * * do-something |
或者,可以通过使用以下命令指定命令从星期一到星期五每六个小时运行一次:
0 0,6,12,18 * * 1,2,3,4,5 do-something |
可以在 crontab 中包含任意多的行,如果希望,可以多次引用相同的命令,而这在其他情况下则相当难于实现。例如,一个命令要在星期一到星期四的下午 6 点运行,但在星期五时要在午餐时间运行,则可以使用以下两行语句:
0 18 * * 1,2,3,4 do-something 0 12 * * 5 do-something |
对于前两个选项(分和时)应该小心处理;如果未指定这两个选项(使用星号),将导致在匹配其他指定值的情况下,每分钟运行一次。例如,一个常见的错误是,希望在月初运行命令,但却使用了以下语句:
* * 1 * * do-something |
这里的问题是,上述指定语句实际上会在每个月的第一天每分钟运行该命令一次。如果希望命令只运行一次,必须指定应执行命令的分和时的值:
0 12 1 * * do-something |
省略分钟值,将至少让命令在匹配指定的时(和日期)的情况下每分钟运行命令一次。
虽然有这么大的灵活性,但仍然会出现很难(甚至不可能)使用 crontab 系统执行命令的情况。
————————-补充
参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
#每天早上7点执行一次 /bin/ls :
0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s “hi” alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 echo “haha”
20 0-23/2 * * * echo “haha”
注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可
例子2 :
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.
crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
crontab命令有三种形式的命令行结构:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。
命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;
命令行中-l选项的作用是显示用户crontab文件的内容。
使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。
执行命令crontab -u user -r即可删除当前用户的所有的cron作业。
作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。
第一道第五个字段的整数取值范围及意义是:
0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。
9月的一天,服务器不知道因何原因,出问题了,然后找机房重启了,结果就发现起不来了。
又重启,还是有问题,再重启,发现问题比较严重了,一直扫描磁盘。
我们以为只是系统出了问题,无法启动,于是买了新硬盘,准备在新硬盘上装新系统,然后挂接旧的硬盘,以为这样就能找回数据了,结果装上新系统后,根本找不到旧硬盘,于是终于想到,可能是旧硬盘坏了。
送回北京,转辗到中关村进行数据恢复,结果又是2周多过去,却得来了,不能恢复数据的消息。
灾难性的消息,让我彻底失去了信心,既然找不回来,那就从头开始。
site:www.d5s.cn 在各大搜索引擎进行尝试,发现他们的网页快照,还保留着我不少的内容,最多的是搜狗、雅虎、谷歌,最少的是百度。
于是赶紧copy回来,找回了一部分以前写的东西,虽然不是很有技术含量,但也是自己亲自写的,自己的部分心得。
其他的几个网站,好在我有使用SVN的习惯,代码都在,只是数据库没了,就只找到了4月份的备份,那就只有重新添加数据了。
再次提醒自己牢记:经常做好网站的数据库备份工作。
[紧急通告]关于蓝色理想经典论坛无法访问的声明
亲爱的蓝色理想网站及经典论坛的会员朋友们,我们在这里非常遗憾地通知大家,在未来的一段时间里,我们将不能保证经典论坛的正常访问,由于来自外部的不可抗力,论坛服务器所在的机房已对我们进行封网处理,原因是相关监管部门接到举报,在我们的服务器上发现了有害内容,这已经是六天来的第二次封网了。
经过和主管部门的积极沟通后,获知这次的举报信息中没有涉及到具体的 URL 和内容,只提交了 IP 地址,从这点来看,无论我们如何迁移设备,都始终无法从根本上解决问题,排除人为因素,依靠我们卑微的智商实在想不出有什么原因会造成这样的结果。所以我们决定在没有得出行之有效的解决方案前,暂时关闭论坛的访问,请相信我们做出这样的决定也是万分无奈和十分痛心的,在此请允许我们致以最诚挚的歉意。
众所周知,蓝色理想是一个纯技术的网站,一直低调务实地为网友服务,为中国互联网做基础技术的普及工作,是广大网站开发设计同行在互联网上温馨的家,这也是这些年我们坚持下来的动力。希望了解我们网站的会员朋友,如有一定相关知识或公安关系资源的,与我们取得联系,协商解决方案,万分感谢!联系方式: blueidea[at]gmail[dot]com
本篇通告冀望藉由 blogosphere 传播,请有 blog 和门户站点的朋友广为转载及引用此篇日志,谢谢。
转载地址是: http://plod.popoever.com/archives/001329.html
转自:http://dhlmtzx.edudh.net/oblog/article.asp?id=1619
思路!做PPT最需要的就是思路。
头痛的东西很多:思路,架构,版面,色调,详略,图片等等.
但感觉最有用也是最头痛的就是思路.
由此,根据我的经验,我认为做PPT的流程应该是:
1、最开始什么都不要想,不要去查资料,也不要接触电脑,而是用笔在纸上写出提纲,当然,能简单的划出逻辑结构图最好了.越细越好.
2、打开PPT,不要用任何模板,将你的提纲按一个标题一页整出来.(过去我就总是追求完美,首先搞摸板,花掉半个多小时,做的过程中不满意又修改,做完后又修改,甚至最后完全推翻—-伤神费力耗时!!)
3、有了整篇结构性的PPT(底版/内容都是空白的,只是每页有一个标题而已),就可以开始去查资料了,将适合标题表达的内容写出来或从网上拷贝进来,稍微修整一下文字,每页的内容做成带”项目编号”的要点.当然在查阅资料的过程中,可能会发现新的资料,非常有用,却不在你的提纲范围中,则可以进行调整,在合适的位置增加新的页面.
4、看看PPT中的内容哪些是可以做成图的,如其中中带有数字、流程、因果关系、障碍、趋势、时间、并列、顺序等等内容的,全都考虑用图画的方式来表现。如果有时候内容过多或实在是用图无法表现的时候,就用“表格”来表现。实在实在是不行了,才用文字说明。所以,最好的表现顺序是:图–表–字。这个过程中图是否漂亮不要在意,“糙”点没关系,关键是你用的图是否准确。
5、选用合适的母版,根据你的PPT呈现出的情绪选用不同的色彩搭配,如果觉得office自带的母版不合适,自己在母版视图中进行调整,自己加背景图、Logo、装饰图等。其实关于母版颜色的选择,这么多年,我也一直没有研究透彻,据说不同的颜色会给人带来不同的感情冲击,专业的书讲的都是些狗屁理论,不就是情绪吗?我就按自己的情绪来定了。当然,如果是有公司自己的标准模版,就不用费这些工夫了,直接用之。
6、在母版视图中调整标题、文字的大小和自体,以及合适的位置。
7、根据母版的色调,将图进行美化,调整颜色、阴影、立体、线条,美化表格、突出文字等。注意在此过程中,把握整个PPT的颜色不要超过3个色系!否则你的PPT就显得特别乱而且“土”!
8、美化页面,看看哪里应该放个装饰图,图片可以从网上找,建议用GOOGLE的图片搜索(用英文最好),装饰图的使用原则是“符合当页主题,大小、颜色不能喧宾夺主!”
9、最后在放映状态下,自己通读一遍,哪里不合适或不满意就调整一下,修改错别字!
10、你以为这就完了吗??没有!注意错别字!(上一步你已改过了,但不够!你自己做自己查的正确率并不高),你知道吃饭的时候,饭里有只苍蝇是什么感觉吗?就是看PPT时看到错别字时的感觉!而且读者一般是老板或客户,会非常怀疑的专业精神和工作态度,前面99%的工作已经做的非常不错了,但你的给读者印象却可能毁于这1%的失误上!因此,将PPT给你的同事或者朋友检查一下,如果文件很重要,建议给2-3个同事检查。
- < ?php
- $cache = "this is val";
- function test($val){
- global $cache;
- $val = '$'.$val;
- eval("\$str = $val;");
- return $str;
- }
- echo test('cache');
- ?>
结果为:this is val
详情查看 »
这是我之前用的转编码方法:把拉丁字符集的mysql数据表 转换成 utf8编码的
之前一直用这个方法转换mysql 的编码 从Latin1 到 UTF8 ,这次有一个70多w条的数据库,要把数据的编码从latin1转换到utf8,没想到使用这个方法,随着记录的增多,数据的插入越来越慢。
当把新表的主键删掉后,速度有了明显的变化,但新的数据条数反而比原来的还要多,真实BT,找不到原因,只好放弃采用删除主键的办法。(主键和索引对mysql的插入、修改、删除速度有影响。)
问了一个朋友后,发现mysqldump 的时候加上–compatible=mysql40 参数,就可以指定编码了
mysqldump -uroot -proot – -compatible=mysql40 – -default-character-set=utf8 d5s_data > d5s.sql
使用phpmyadmin打开后,是乱码,但是查询出来,页面显示是正常的。(mysql使用utf8编码,数据库也是utf8编码。)
前台页面使用的是默认编码 gb2312,链接数据库后,也没有使用 set names
既然页面正常,那就好办,先把数据查出来,然后改写成sql语句,把sql当作文件来保存。
sql语句被保存后,这个时候还不能用,先把sql文件打开,用editplus另存为 utf8 格式。
用phpmyadmin 新建一个相同结构的数据库(不包括数据)
再使用phpmyadmin,载入这个sql文件,直接运行。或者是把sql语句复制到phpmyadmin中运行也行(但是文件太大的时候就太慢了。)
- <?php
- $link = mysql_connect('localhost', 'root', 'root');
- mysql_select_db('temp');
- $table = "article"; //指定表名
- $query = 'SELECT * FROM '.$table;
- $result = mysql_query($query);
- while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
- $key = array();
- $value = array();
- foreach ($line as $k=>$v) {
- $key[] = $k;
- $value[] = "'".str_replace("'", "'", $v)."'";
- }
- $sql[] = "INSERT INTO `".$table."`(".join(",", $key).") VALUES(".join(",", $value).");\r\n";
- }
- file_put_contents("sql/".$table."_sql.php", $sql);
- mysql_free_result($result);
- mysql_close($link);
- ?>
判断一个字符串中是否含有另一字符串,php有很多方法
常见函数 strstr($str, “abc”);
正则匹配 preg_match(”/(abc)?/is”, $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, “abc”); 就可以解决问题了
但是用正则呢,就只有这样了,”/^((?!abc).)*$/is”
- < ?php
- $str = "dfadfadf765577abc55fd";
- $pattern_url = "/^((?!abc).)*$/is";
- if (preg_match($pattern_url, $str)){
- echo "不含有abc!";
- }else{
- echo "含有abc!";
- }
- ?>
输出结果:含有abc!
详情查看 »
计算两个时间差$time=$time1-$time2;
再算出时间差折合多少天多少秒,比如一天是24*60*60=86400秒,一小时是60*60=3600秒,如此如此
然后计算出相差多少天,向下取整,$days=floor($timedif/86400);
$days的值就是相差的天数,余数被略去了,当然可以用类似的操作再计算出余下多少小时多少分钟多少秒.
- <?php
- $time = 5363;
- function interval_time($time){
- $days = interval_day($time); //多少天
- $hour = interval_hour($time-86400*$days);
- $minute = interval_minute($time-86400*$days-3600*$hour);
- $second = interval_second($time-86400*$days-3600*$hour-60*$minute);
- $str = "";
- $str.= $days ? $days."天":"";
- $str.= $hour ? $hour."小时":"";
- $str.= $minute ? $minute."分":"";
- $str.= $second ? $second."秒":"";
- return $str;
- }
- function interval_day($time){
- if ($time>=86400){
- return floor($time/86400); //多少天
- }
- }
- function interval_hour($time){
- if ($time>=3600 and $time<86400){
- return floor($time/3600); //多少小时
- }
- }
- function interval_minute($time){
- if ($time>=60 and $time<3600){
- return floor($time/60); //多少分钟
- }
- }
- function interval_second($time){
- if ($time>0 and $time<60){
- return $time; //多少秒
- }
- }
- echo interval_time($time);
- ?>
输出结果为:1小时29分23秒
