解析Ubuntu下crontab命令的用法_php技巧

cron是一个Linux下的后台进程,用来定期的执行一些任务。因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效,但其他系统应该也差不多。

想要让cron执行你指定的任务,首先就要编辑crontab文件。crontab是一个文本文件,用来存放你要运行的命令。你可以以下命令
crontab -e 
来打开你的用户所属的crontab文件。第一次用这个命令,会让你选择文本编辑器,我选的是vim。选定的编辑器也可以使用
select-editor 
命令来更改。这点命令行中已经有足够的提示,就不多说了。

打开后的crontab文件类似这种样子:
# m h  dom mon dow   command 
*/2 * * * * date >> ~/time.log 
第二行是我为了测试写的一个定期任务,它的意思是,每隔两分钟就执行 date >> ~/time.log 命令(记录当前时间到time.log文件)。你可以把它加入你的crontab中,然后保存退出。

保存了crontab之后,我们还需要重启cron来应用这个计划任务。使用以下命令:
sudo service cron restart
下面稍微解释下crontab中每行的含义。crontab中的每一行代表一个定期执行的任务,分为6个部分。前5个部分表示何时执行命令,最后一个部分表示执行的命令。每个部分以空格分隔,除了最后一个部分(命令)可以在内部使用空格之外,其他部分都不能使用空格。前5个部分分别代表:分钟,小时,天,月,星期,每个部分的取值范围如下:

分钟          0 - 59
小时          0 - 23
天              1 - 31
月              1 - 12
星期          0 - 6       0表示星期天

除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:

星号          表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
逗号          可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
斜线          一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 */2 代表每隔两分钟。所以 */1 和 * 没有区别
                  */2 可以看成是能被2整除的任意值。

以下是一些例子(省略了命令部分):
* * * * *                  # 每隔一分钟执行一次任务 
0 * * * *                  # 每小时的0点执行一次任务,比如6:00,10:00 
6,10 * 2 * *            # 每个月2号,每小时的6分和10分执行一次任务 
*/3,*/5 * * * *          # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06
以上就是在cron中加入计划任务的基本知识。因为cron中的任务基本就是执行命令行,所以当然也会有权限问题。以上例子中的任务就是以你当前登录用户的权限执行的,如果你需要以root用户执行某个任务,可以在crontab前加上sudo。
sudo crontab -e 
顺带一提,crontab文件对每个用户都是不同的,所以刚才设置的定期看时间的任务,在这里是看不到的。因为我们没有为root用户增加这样的计划任务。

再顺带一提,不喜欢命令行的童鞋可以去 Ubuntu软件中心 下一个 计划任务 程序。在软件中心中搜索 schedule 就可以搜到。它是一个GUI的程序,做的还蛮傻瓜化的。不过好像没办法设置成使用root用户运行任务。而且,对于要ssl到服务器上进行操作的童鞋来说,命令行还是最好(唯一)的工具。

因为我目前就用到这些知识,所以对cron也没有更多了解。想了解Ubuntu下的cron的童鞋,可以去看看Ubuntu官方的这篇 CronHowTo ,个人觉得讲的还是蛮详细的。

时间: 2024-10-28 14:22:17

解析Ubuntu下crontab命令的用法_php技巧的相关文章

Linux下crontab命令的用法

crontab命令 用途 提交.编辑.列出或除去cron作业. 语法 crontab[-e[UserName]|-l[UserName]|-r[UserName]|-v[UserName]|File] 描述 这个crontab命令提交.编辑.列出或除去cron作业.一个cron作业是一个命令,其运行是由cron守护程序在规则的调度间隔执行的.要提交一个cron作业,指定crontab命令用-e标志.crontab命令调用一个编辑会话,允许创建一个crontab文件.在这个文件中,为每个cron创

解析wamp5下虚拟机配置文档_php技巧

Wamp下,虚拟机配置分为三个步骤,实例如下:1.修改Hosts文件C:\WINDOWS\system32\drivers\etc\Hosts127.0.0.1 dz1.test.com 2.编辑wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf文件,在文件底部加入以下代码<VirtualHost *:80>ServerName dz1.test.comServerAlias dz1.test.comDocumentRoot &q

解析PHP可变函数的经典用法_php技巧

复制代码 代码如下: <?phpfunction map($fun, $list,$params=array()){    $acc=NULL;    $last=array_push($params, NULL,$acc)-1;    foreach($list as $params[$last-1]){     //第一次见这种写法感觉很神奇        $params[$last]=call_user_func_array($fun , $params  );    }    $acc=

解析PHP中ob_start()函数的用法_php技巧

ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要发挥你的想象.可以总结以下四点: 1.用于header()之前ob_start(); //打开缓冲区 echo /"Hellon/"; //输出 head

运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行脚本的问题

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1676490 运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下cro

ubuntu下使用命令打开wifi

问题描述 ubuntu下使用命令打开wifi 怎么使用linux命令连接上wpa2加密的wifi.网上能搜得到我都试过了.现在情况是,当无连接wifi的时候,命令什么wifi都连不上.有连接的时候,连不上wpa2加密的wifi.求解怎么使用命令连上wpa2加密的wifi,请试成功后告诉我,急急急! 能使用c接口改写linux wifi文件的也行.最好要完整的源码. 解决方案 怎么样Ubuntu下使用随身wifilinux wifi的配置和使用命令 解决方案二: http://blog.csdn.

Linux命令下crontab命令_Linux

crontab是一个用来设置.删除或显示供守护进程cron执行的定时任务的命令.每一个用户都可以拥有属于自己的定时任务,定时任务文件默认以用户名命名,并放在/var/spool/cron目录,该目录普通用户无访问权限. 可以通过cron.allow 和 cron.deny文件管理用户使用crontab的权限.如果cron.allow存在,用户必须列在其中才会被允许使用cron:如果cron.deny存在,被列在其中的用户禁止使用cron:如果两者都不存在,只有超级用户才能使用cron.在Cent

Linux下nl命令的用法详解

Linux中nl命令和cat命令很像,不过nl命令会打上行号,属于比较不常用的命令,下面随小编一起来了解下这个鲜为人知的nl命令吧. nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能. 1.命令格式: nl [选项]... [文件]... 2.命令参数: -b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出

php动态绑定变量的用法_php技巧

本文实例讲述了php动态绑定变量的用法.分享给大家供大家参考.具体如下: private function bindVars($stmt,$params) { if ($params != null) { $types = ''; //initial sting with types foreach($params as $param) { //for each element, determine type and add if(is_int($param)) { $types .= 'i';