Ubuntu下crontab命令的用法

cron是一个Linux下的后台进程,用来按期的执行一些任务。由于我用的是Ubuntu,因此这篇文章中的全部命令也只能保证在Ubuntu下有效,但其余系统应该也差很少。php

想要让cron执行你指定的任务,首先就要编辑crontab文件。crontab是一个文本文件,用来存放你要运行的命令。你能够如下命令vim

crontab -e

来打开你的用户所属的crontab文件。第一次用这个命令,会让你选择文本编辑器,我选的是vim。选定的编辑器也可使用服务器

select-editor

命令来更改。这点命令行中已经有足够的提示,就很少说了。dom

打开后的crontab文件相似这种样子:编辑器

# m h  dom mon dow   command  
*/2 * * * * date >> ~/time.log  
*/1 * * * *  /usr/local/bin/php  /var/www/ghby/a.php
#php 的路径要写绝对路径

第二行是我为了测试写的一个按期任务,它的意思是,每隔两分钟就执行 date >> ~/time.log 命令(记录当前时间到time.log文件)。你能够把它加入你的crontab中,而后保存退出。工具

保存了crontab以后,咱们还须要重启cron来应用这个计划任务。使用如下命令:测试

sudo service cron restart

下面稍微解释下crontab中每行的含义。crontab中的每一行表明一个按期执行的任务,分为6个部分。前5个部分表示什么时候执行命令,最后一个部分表示执行的命令。每一个部分以空格分隔,除了最后一个部分(命令)能够在内部使用空格以外,其余部分都不能使用空格。前5个部分分别表明:分钟,小时,天,月,星期,每一个部分的取值范围以下:命令行

分钟 0 - 59rest

小时 0 - 23code

天 1 - 31

月 1 - 12

星期 0 - 6 0表示星期天

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

星号 表示任意值,好比在小时部分填写 * 表明任意小时(每小时)

逗号 能够容许在一个部分中填写多个值,好比在分钟部分填写 1,3 表示一分钟或三分钟

斜线 通常配合 使用,表明每隔多长时间,好比在小时部分填写 /2 表明每隔两分钟。因此 /1 和 没有区别

*/2 能够当作是能被2整除的任意值。

如下是一些例子(省略了命令部分):

1 * * * *        # 每隔一分钟执行一次任务 (或 * * * * *) 
0 * * * *        # 每小时的0点执行一次任务,好比6:00,10:00  
6,10 * 2 * *            # 每月2号,每小时的6分和10分执行一次任务  
*/3,*/5 * * * *         # 每隔3分钟或5分钟执行一次任务,好比10:03,10:05,10:06
0 1 * * *  cd /var/www/shopgo && /usr/local/bin/php index.php /home/stock/partner_timed_task #天天凌晨1点执行

以上就是在cron中加入计划任务的基本知识。由于cron中的任务基本就是执行命令行,因此固然也会有权限问题。以上例子中的任务就是以你当前登陆用户的权限执行的,若是你须要以root用户执行某个任务,能够在crontab前加上sudo。

sudo crontab -e

顺带一提,crontab文件对每一个用户都是不一样的,因此刚才设置的按期看时间的任务,在这里是看不到的。由于咱们没有为root用户增长这样的计划任务。

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

由于我目前就用到这些知识,因此对cron也没有更多了解。想了解Ubuntu下的cron的童鞋,能够去看看Ubuntu官方的这篇 CronHowTo ,我的以为讲的仍是蛮详细的。你对人生迷茫吗? 那就背起行囊,起步远行吧

相关文章
相关标签/搜索