解析Ubuntu下crontab命令的用法

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,个人觉得讲的还是蛮详细的。

(0)

相关推荐

  • 详解Unix/Linux中周期执行指令Crontab命令

    简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. 通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行.这类作业一般称为cron jobs. cron 是 Unix/Linux 中提供定期执行 shell 命令的服务,包括 crond 和 crontab 两部分: crond: cron 服务的守护

  • Linux中使用crontab命令启用自定义定时任务实例

    Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,有需要的朋友可以了解一下. 一 简介 Linux下的任务调度分为两类,系统任务调度和用户任务调度 系统任务调度:系统需要定期执行的任务,比如重启.日志清理等,其配置文件是:/etc/crontab 用户任务调度:某个用户需要定期执行的任务.用户可以使用 crontab 命令来配置自己的定时任务.所有用户配置的定时任务都存放在 /var/spool/c

  • 使用linux命令crontab间隔时间执行其它命令

    1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序.每个用户可以建立自己的调度crontab. 如: 复制代码 代码如下: [root@dave ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly

  • Linux命令下crontab命令

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

  • 谈谈shell中的eval与crontab命令

    eval eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令.因此,eval命令适用于那些一次扫描无法实现其功能的变量. eval 执行以下两个步骤 第一次,执行变量替换,类似与C语言的宏替代 第二次,执行替换后的命令串 栗子: 1.  有一个名为test的文件,其内容为"Please move on !",定义一个内容是cat

  • 解析Ubuntu下crontab命令的用法

    cron是一个Linux下的后台进程,用来定期的执行一些任务.因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效,但其他系统应该也差不多. 想要让cron执行你指定的任务,首先就要编辑crontab文件.crontab是一个文本文件,用来存放你要运行的命令.你可以以下命令crontab -e  来打开你的用户所属的crontab文件.第一次用这个命令,会让你选择文本编辑器,我选的是vim.选定的编辑器也可以使用select-editor  命令来更改.这点命令行中已

  • 详解linux下tree命令的用法

    tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装, 安装 : yum -y install tree -a 显示所有文件和目录. -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合. -C 在文件和目录清单加上色彩,便于区分各种类型. -d 显示目录名称而非内容. -D 列出文件或目录的更改时间. -f 在每个文件或目录之前,显示完整的相对路径名称. -F 在执行文件,目录,Socket,

  • 解析windows下使用命令的方式安装mysql5.7的方法

    解压zip压缩包,创建my.ini文件内容如下 这里注意一下sql_mode 这里写的是让MySQL使用习惯类似Oracle,具体哪些什么意思大家很容易百度查到 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO

  • Linux 下rename 命令的用法第1/2页

    首先来说一下mv命令,在man mv中我们可以看到对于mv命令的介绍是这样的: mv -move(rename) files 可以看到mv命令确实有重命名的功能,但是实际应用中,它只能对单个文件重命名,命令如下: mv [path/]oldfilename [path/]newfilename "mv命令只能对单个文件重命名",这实就是mv命令和rename命令的在重命名方面的根本区别. 再来说rename命令,在man rename的说明如下: NAME rename -Rename

  • ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析

    1.安装ubuntu时使用的virt-install的配置: virt-install \ --name test4 \ --ram 1024 \ --disk path=/data/01_ubuntu/ubuntu4.img,size=6 \ --vcpus 1 \ --hvm \ --os-type linux \ --network network=default \ --os-variant ubuntuquantal \ --graphics none \ --console pty,

  • dos下at命令的用法

    At 列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序.必须正在运行"计划"服务才能使用 at 命令. at [\\computername] [[id] [/delete] | /delete [/yes]] at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command  参数 无 如果在没有参数的情况下使用,则 at 列出已计划的命令. [url=file:

  • Linux下alias命令的用法详解

    1.alias的使用 alias命令用来设置指令的别名.我们可以使用该命令可以将一些较长的命令进行简化. 用alias 短命令='原命令 选项' alias 138ssh= 'ssh -i ~/.ssh/138.pem ec2-user@192.168.21.138' 这下子就可以直接使用138ssh 来代替原来ssh -i ~/.ssh/138.pem ec2-user@192.168.21.138 查看当前所有的alias alias-p 删除一个alias unalias 命令 然后我就开

  • ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析

    1.安装ubuntu时使用的virt-install的配置: virt-install \ --name test4 \ --ram 1024 \ --disk path=/data/01_ubuntu/ubuntu4.img,size=6 \ --vcpus 1 \ --hvm \ --os-type linux \ --network network=default \ --os-variant ubuntuquantal \ --graphics none \ --console pty,

  • Ubuntu系统下用Crontab命令定时执行PHP文件详解

    前言 一般我在开发中,常用的定时任务有2种.一种是直接调用PHP文件执行,还有一种是调用远程URL地址. 首先,先来亮相一下我们今天的主角,Crontab命令.这个是系统定时命令,作用是定时的去执行一些任务.包含一些系统级别的任务,当然用户也可以直接借用该命令来实现自己的一些计划任务. 该命令一般跟随系统启动,我们可以使用一下命令来查看是否cron是否启动 pgrep cron 如果启动了,会返回一个进程id Crontab文件一般存放于/etc目录下.我们使用,crontab -e来编辑cro

随机推荐