Linux计划任务crontab使用说明linux操作系统

夏秋秋 分享 时间: 收藏本文

【简介】感谢网友“夏秋秋”参与投稿,下面是小编给各位读者分享的Linux计划任务crontab使用说明linux操作系统(共6篇),欢迎大家分享。

篇1:Linux计划任务crontab使用说明linux操作系统

在linux系统中我们要实现计划任务就必须得使用crontab命令来实现,下面我来给大家介绍两个利用crontab实现的计划任务的脚本,希望对大家帮助,

crontab简介

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos,原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

crontab用法

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...个小时要执行,其余类推

管理员登录SSH, 输入命令crontab -e 编辑crontab文件,根据上面的格式输入并保存。

crontab例子

每月每天每小时的第 0 分钟执行一次 /bin/ls :

代码如下复制代码

0 * * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :

代码如下复制代码

*/20 6-12 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 admin@3aj.cn :

代码如下复制代码

0 17 * * 1-5 mail -s “hi” admin@3aj.cn < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo “hi 3a技术网”

代码如下复制代码

20 0-23/2 * * * echo “hi 3a

晚上11点到早上8点之间每两个小时,早上8点

代码如下复制代码

0 23-7/2,8 * * * date

在hp unix,中,每20分钟执行一次,表示为:0,20,40 * * * * 而不能采用*/n方式,否则出现语法错误,

crontab用法其实很容易掌握,懂得使用crontab,对网站和服务器维护起到很大的帮助,比如定时备份,定时优化服务器等。

说到备份我们来看一个利用crontab来定时备份mysql数据库

mysql_databasename_backup.sh备份使用

代码如下复制代码

#!/bin/bash

extdir='/home/mysql/backup/';

extbase='auto_databasename_'`date '+%F'`;echo $extbase;

extfile='auto_databasename_'`date '+%F'`'.sql';echo $extfile;

echo ”开始备份数据...“

cd $extdir

mysqldump --opt databasename -u username -ppassword | gzip > $extdir$extfile.gz

echo ”删除本地7天前的备份数据...“

old_file='auto_databasename_'`date '+%F' --date='7 days ago'`'.*'

echo $old_file

rm -rf $extdir$old_file

mysql_autoback_cron.sh每天轮询用的

代码如下复制代码

* 3 * * * /usr/share/jetty6/cron/mysql_databasename_backup.sh > /usr/share/jetty6/cron/mysql_autoback_cron_log.txt

一句话加入到crontab

代码如下复制代码

crontab mysql_autoback_cron.sh

篇2:linux中crontab 计划任务linux操作系统

本文章来给大家介绍linux中crontab的使用方法及简单的使用crontab实现计划任务方法,这个计划任务有点像windows的计划任务一样的哦,

1.作用

使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时

间执行,该命令使用权限是所有用户。

2.格式

代码如下复制代码

crontab [ -u user ] 文件

crontab [ -u user ] { -l | -r | -e }

3.主要参数

-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。

-r:删除目前的时程表。

-l:列出目前的时程表。

crontab文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(

0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星

期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL

三个环境变量。

4.说明

和at命令相比,crontab命令适合完成固定周期的任务。

5.应用实例

设置一个定时、定期的系统提示:

[cao @www cao]#crontab -e

此时系统会打开一个vi编辑器。

如果输入以下内容:35 17 * * 5 wall ”Tomorrow is Saturday I will go CS“,

这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!

用crontab命令实现每天定时的病毒扫描

前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。

代码如下复制代码

30 21 * * * /opt/lampp/lampp restart

#上面的例子表示每晚的21:30重启lampp。

45 4 1,10,22 * * /opt/lampp/lampp restart

#上面的例子表示每月1、10、22日的4 : 45重启lampp。

10 1 * * 6,0 /opt/lampp/lampp restart

#上面的例子表示每周六、周日的1 : 10重启lampp。

0,30 18-23 * * * /opt/lampp/lampp restart

#上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lampp。

0 23 * * 6 /opt/lampp/lampp restart

#上面的例子表示每星期六的11 : 00 pm重启lampp。

* */1 * * * /opt/lampp/lampp restart

#每一小时重启lampp

* 23-7/1 * * * /opt/lampp/lampp restart

#晚上11点到早上7点之间,每隔一小时重启lampp

0 11 4 * mon-wed /opt/lampp/lampp restart

#每月的4号与每周一到周三的11点重启lampp

0 4 1 jan * /opt/lampp/lampp restart

#一月一号的4点重启lampp

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

查看、编辑和删除

cron把命令行保存在crontab(cron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab(在 /var/spool/cron/ 下)。要查看当前用户的crontab,输入 crontab -l;要编辑crontab,输入 crontab -e;要删除crontab,输入 crontab -r。如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME(如 crontab -e -u USERNAME)即可。crontab文件的默认编辑器是vi,可以输入 export VISUAL=’editor’ 更改默认编辑器。

cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

语法说明

以下是两个cron语句的例子(在 /etc/crontab 文件里)。前者用来晚间备份 /etc 目录,后者运行Analog程序处理服务器的统计信息。

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&152 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1以下是cron语句中的字段与字段说明:

字段 说明

1 分钟(0-59)

2 小时(2-24)

3 日期(1-31)

4 月份(1-12;或英文缩写Jan、Feb等)

5 周几(0-6,0为周日;或单词缩写Sun、Mon等)

6 用户名(执行命令时以此用户的身份)

7 要执行的命令(路径)

现在来看第一行:

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1这条语句将在每天的凌晨3点12分(03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

这条语句可以变得稍微复杂一点:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1它将在6月13日周一的15:30运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令,

以下语句可以达到同样的效果:

30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1如果你想以用户joey的身份每小时的第15分钟运行某个程序,可以使用:

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1其中的星号(*)是通配符,表示cron将忽略这个字段。

如果你想每两小时就运行某个程序,可以在小时字段里使用 */2。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分运行某个程序,可以在分钟字段使用 15,30:

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1如果你想在每月的第一周(即1号到7号)每天的指定时间运行某个程序,可以在日期字段使用 1-7:

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1这条语句将在每月的第1-7日每两小时的15分和30分(02:15,02:30……22: 15,22:30等)运行 /usr/bin/somecommand 命令。

如果你想在每天的16:18执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为 >> /home/user/somecommand.log 2>&1 。

crontab命令用于定时执行指定的命令,功能类似Windows下的“任务计划”,通常用来做一些重复性的工作。

Linux系统的用户只需将要执行的命令序列加到crontab文件中,操作系统即会按用户配置的时间执行这些命令序列。

向crontab文件里添加指令之前,需要检查下crontab服务是否已启动和是否开机自动启动:

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动 ,执行命令:ntsysv

打开服务配置,查看crond服务前的[]是否已选中(打*号为选中),若未选中则选中该服务。

使用命令:crontab -l 查看当前用户已配置的任务计划

编辑crontab文件命令:crontab -e

也可以不使用“crontab -e”命令创建crontab配置文件,其他任何文本编辑器编写命令序列,比如文件名为“abc.cron”,然后使用命令:“crontab abc.cron”将命令序列添加到crontab中。

默认情况下,系统所有用户都可以使用crond服务。如需对crond服务的使用加限制,可以使用配置文件/etc/cron.allow和 /etc/cron.deny,望文生义,cron.allow是允许使用crond服务的用户清单,cron.deny里的用户则相反

crontab命令的语法格式如下:

格式一:crontab [-u user] file

此命令用于添加一个新的crontab 文件

-u 如果使用该选项,指定用户的 crontab 文件将被修改,反之则修改执行 crontab 命令用户的 crontab 文件。

格式二:crontab [-u user] [ -e | -l | -r ]

-l 在标准输出上显示当前的crontab。

-r 删除当前的crontab文件。

-e 使用系统编辑器编辑当前的crontab文件。当编辑完成后,文件将自动安装。这种方式很方便,修改后即时生效。

废话了半天,这里才是重点。crontab 文件中命令格式如下:

minute hour day-of-month month-of-year day-of-week commands

即:“分 时 日 月 周 命令 ”,共计6段,前5段都是时间,最后一段才是你要定期执行的指令。每段之间使用空格或者制表符分隔。

来看一下前5段即日期和时间的取值范围 :

1,分钟[00-59]

2,小时[00-23]

3,日[01-31]

4,月份[01-12]

5,周[0-6] ;注意,这里的0表示周日

OK,来个简单点的例子,每天早上6点半起床:

30 06 * * * echo ”Get Up Now !“ >> /tmp/test.txt

将上面这条指令另到crontab文件,系统每天上午6点半会向/tmp/test.txt文件里添加一行“Get Up Now !”。

上面这条指令里使用了特殊符号“*”,与SQL查询语句“SELECT * FROM TAB”里的“*”一样是“任何”的意思,即代表当前段取值范围内的所有数字,如第3段上的“*”代表[01-31]日,第4段上的“*”代表[01-12]月。

特殊符号除了“*”号还有“/”、“-”、“,”:

/ 代表“每”的意思,如“/5”表示每5个单位;

- 用于表示一个范围,如“[1-10]”表示从1到10;

, 用于表示若干离散的数字,如“5,15,25”

比如命令:[0-59]/5 23 * * * /sbin/shutdown -h now

表示每晚11点开始,每5分钟尝试一次关机,帮你养成早睡早起的好习惯,呵呵。机器关掉后,如果尝试开机,则到5的倍数时会再次关掉,酷似Windows 中了冲击波病毒。

00,10,20,30,40,50 * * * * echo ”10 minutes has passed !“ >> /tmp/test.txt

每小时的00分、10分、20分、30分、40分、50分向文件“/tmp/test.txt”写一行又十分钟过去喽

篇3:Linux计划任务crontab配置方法linux操作系统

计划任务是几乎所有系统中都有一个功能,下面我来介绍Linux计划任务crontab配置方法,有需要了解的朋友可参考,

如果要设定定时执行工作时,可以使用指令 crontab -e 来编辑自己的定时执行工作,crontab 会将使用者的工作设定放在 /var/cron/tabs 中。

我们先来看一下 /etc/crontab 的内容说明:

代码如下复制代码

# 设定使用的 shell, 路径

SHELL=/bin/sh

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

# 设定执行指令时的目录

HOME=/var/log

# 当指令有输出数据时,要将输出的东西寄给谁。

MAILTO=”10000@qq.com“

如果你不想执行任务了我们可以直接删除了

crontab -r //删除所有任务调度工作

关于crontab

crontab -e 编辑该用户的crontab,当指定crontab 不存在时新建,

crontab -l 列出该用户的crontab。

crontab -r 删除该用户的crontab。

crontab -u 《用户名称》 指定要设定crontab的用户名称。

crontab –v 显示上一次编辑的时间(只在某些操作系统上可用)

一个小小的给新手的提示

新手可能会这么写

代码如下复制代码

1 00 00 * * * ntpdate asia.pool.ntp.org ;

但这么写是出错的,你可能百思不得其解,在命令状态下执行看下结果

代码如下复制代码

12 -bash-4.1# ntpdate asia.pool.ntp.org

篇4:Linux系统计划任务crontab命令简单介绍linux操作系统

计划任务在linux中crontab命令来完成,今天我来介绍linux中crontab命令的一些简单用法与例子,希望文章对你会有所帮助哦,

Linux计划任务cron是一个定时模式,例如我们可以在系统使用最少时对系统进行备份,但是管理员不可能在半夜来到公司工作,那么就可以使用Linux计划任务cron,现在来介绍一下具体使用方法。

目前流行的Linux系统在安装好后cron都是安装好的并且是随机启动的

启动cron服务/sbin/service crond start

停止服务/sbin/service crond stop

重启服务/sbin/service crond restart

重新加载/sbin/service crond reload

服务的启动停止介绍完了下面来说如何添加计划任务

使用crontab命令

crontab -u设定某个用户的cron服务

crontab -l列出当前用户的cron服务的详细内容

crontab -r删除当前用户的cron服务

crontab -e编辑当前用户的cron服务

例如当前登陆的用户是root

运行crontab-e就给root用户创建一个计划任务

运行crontab -e进入vi编辑计划任务内容

第1位分钟表示(0-59)第2位表示小时(0-23)

第3位表示天(1-31)第4位表示月份(1-12)

第5位置表示星期(0-6)0表示星期日

后面www.111cn.net是你要执行的任务

每一位之间使用空格分开

上面时间除了使用数字还有几个特殊符号

“*”表示所有数值如第一位使用*表示每分钟

“/”表示每如果第一位使用*/5表示每5分钟

“-”表示数值范围“,”来隔开离散的数值如第2位是1-6,8表示1点到6点,还有8点

具体实例如下

每天1点向某个文件写入一段话

0 1 * * * echo ”helloworld">>/tmp/test.txt

每5分钟向执行一个程序或者命令

*/5 * * * * 执行的命令

如何知道您的计划任务是否运行了,1你可以去检查您要执行的命令是否在你指定的时间去运行了,2有的命令运行结果不好查看你可以去查cron的日志/var/log/cron

在此文件中记录了计划任务执行的情况

上述方法添加完成计划任务后会在/var/spool/cron目录中生成一个用户名字的文件,文件里面就是你的计划任务,cron服务每分钟读取一次/var/spool/cron中的文件

还有一种方法可以添加计划任务自己编辑/etc/crontab(cron服务每分钟也读取一次/etc/crontab文件)

在文件的末尾添加计划任务格式和上述方法完全一样

/etc/crontab里面还有其他的东西,下面来说下

MAILTO=root//如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

01 * * * * root run-parts /etc/cron.hourly 每个小时去执行一遍/etc/cron.hourly内的脚本

0 24 * * * rootrun-parts /etc/cron.daily 每天去执行一遍/etc/cron.daily内的脚本

2 24 * * 0 root run-parts /etc/cron.weekly 每星期去执行一遍/etc/cron.weekly内的脚本

4 24 1 * * root run-parts /etc/cron.monthly 每个月去执行一遍/etc/cron.monthly内的脚本

注意上面的run-parts参数如果去掉run-parts后面就要跟要执行的某个脚本名,如果加上run-parts参数后面就要跟目录名了

也可以限制cron的使用

如果在/etc/目录中存在cron.allowcron.deny文件

只有cron.allow文件中列出的用户才能使用cron服务,同时忽略cron.deny文件

如果cron.allow文件不存在,cron.deny文件中列出的用户将被禁止使用cron服务,

这样我们就完成了Linux计划任务cron的学习。

补充一些例子:

crontab文件的的些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周 6、周日的1 : 10重启apache

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00的间每隔30分钟重启apache

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例www.111cn.net表示每星期 6的11 : 00 pm重启apache

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每的小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点的间的每隔的小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号和每周的到周 3的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

的月的号的4点重启apache

篇5:Linux中定时计划任务crontab使用实例linux操作系统

很多网友,提出疑问,说不知道,如何使用定时器,为了方便大家学习以及自己查阅,总结如下:

1、计划任务概说;

计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思,在Linux中,我们经常用到 crond 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对httpd 服务器重新启动,这就是一个计划任务;

下面我们先来说说cron;

2、cron;

在Linux系统中,计划任务一般是由cron承担,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性 配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用度工作任务。

2.1 cron 的安装和启动;

在一般情况下,cron都是系统默认安装的,我们要学会查看软件包是否已经安装;

crontab使用例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的1 : 10重启apache,

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44

每半小时同步一下时间

其它:定时访问一个指定URL

每天凌晨3点30访问这个URL

30 3 * * * /usr/bin/wget -q -O temp.txt mb.111cn.net

每10分钟访问这个URL

*/10 * * * * /usr/bin/wget -q -O temp.txt www.111cn.net

篇6:Linux中crontab命令参数与使用说明linux操作系统

定时任务常用的一个功能,详细如下:

服务的启动和停止

cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

Linux代码

/sbin/service crond start

/sbin/service crond stop

/sbin/service crond restart

/sbin/service crond reload

以上1-4行分别为启动、停止、重启服务和重新加载配置。

要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。

查看、编辑和删除

cron把命令行保存在crontab(cron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab(在 /var/spool/cron/ 下)。

file 使用file文件的内容作为某个用户的cron服务配置,内容会复制到cron服务的配置文件中

-u 设定某个用户的cron服务配置,一般root 用户在执行这个命令的时候需要此参数

-l 列出某个用户cron服务配置

-r 删除某个用户的cron服务配置

-e 编辑某个用户的cron服务配置,当指定crontab 不存在时新建,将使用vi打开配置文件进行编辑保存后退出,文件语法见后

crontab –v 显示上一次编辑的时间(只在某些操作系统上可用)

如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME (如 crontab -e -u USERNAME )即可。

crontab文件的默认编辑器是vi,可以输入 export VISUAL=’editor’ 更改默认编辑器。

cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

语法说明

每行表示一个指令,即表示一项计划任务;每行由空格分隔的六个部分组成,前5部分表示定时任务的执行时间,剩余部分为定时任务要执行的命令,格式如下:

分 小时 日 月 星期 命令

Minute Hour Day Month DayOfWeek command

Minute 每个小时的第几分钟执行该任务,0-59

Hour 每天的第几个小时执行该任务,0-23

Day 每月的第几天执行该任务,1-31

Month 每年的第几个月执行该任务,1-12

DayOfWeek 每周的第几天执行该任务,0-6,0表示周日

Command 指定要执行的程序

以上前五项可使用以下四个特殊符号:

* 表示所有数值,如第一位使用* 表示每分钟

/ 表示每,如第一位使用 */5 表示每5分钟

- 表示数值范围,如第二位使用2-4表示2点到4点

, 表示离散的多个数值,如第2位使用6,8 表示6点和8点

指定“步长”:8-14/2 表示8,10,12,14

指定列表:比如 “1,2,3,4″,”0-4,8-12″

在每行的六项字段中,除了Command是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

1)除去前五段,从第六段开始到换行符或者“%”为止,为要执行的命令。

2)默认第六段将被/bin/sh执行,除非在crontab文件中指定了非/bin/sh的SHELL变量。

3)第六段中的”%”号,除非前面加””号转交,否则,“%”号将结束命令行、换行的意义,并且其后的内容会被做为标准输入发送给前面的命令。

名称 : crontab

使用权限 : 所有使用者

使用方式 :

crontab file [-u user]-用指定的文件替代目前的crontab。

crontab-[-u user]-用标准输入替代目前的crontab.

crontab-1[user]-列出用户目前的crontab.

crontab-e[user]-编辑用户目前的crontab.

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.

举例如下:

Every minute (* * * * *)

Every 5 minutes (*/5 * * * *)

Twice an hour (0,30 * * * *)

Once an hour (0 * * * *)

Twice a day (0 0,12 * * *)

Once a day (0 0 * * *)

Once a week (0 0 * * 0)

1st and 15th (0 0 1,15 * *)

Once a month (0 0 1 * *)

Once a year (0 0 1 1 *)

Linux代码

5     *     *    *    *   ls > /var/log.txt          指定每小时的第5分钟执行一次ls命令,并将结果保存到/var/log.txt文件

30   5     *     *    *    ls   指定每天的 5:30 执行ls命令

30   7     8     *    *    ls   指定每月8号的7:30分执行ls命令

30   5     8     6    *    ls   指定每年的6月8日5:30执行ls命令

30   6     *     *    0    ls   指定每星期日的6:30执行ls命令 [注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

30   3    10,20  *    *    ls   每月10号及20号的3:30执行ls命令 [注:“,”用来连接多个不连续的时段]

25   8-11  *     *    *    ls   每天8-11点的第25分钟执行ls命令 [注:“-”用来连接连续的时段]

*/15 *     *     *    *    ls   每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]

30   6    */10   *    *    ls   每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令,

]

cron配置文件

使用crontab命令添加完成计划任务后会在/var/spool/cron目录中生成一个用户名字的文件,文件里面就是你的计划任务,cron服务会每分钟读取一次/var/spool/cron 中的文件。

系统计划任务

还有一种方法可以添加计划任务,编辑/etc/crontab (cron服务每分钟也读取一次/etc/crontab文件。

用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

Linux代码

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=/ //使用者运行的路径,这里是根目录

# run-parts

#每小时执行/etc/cron.hourly内的脚本

01  *  *  *  *    root run-parts /etc/cron.hourly

#每天执行/etc/cron.daily内的脚本

02  4  *  *  *    root run-parts /etc/cron.daily

#每星期执行/etc/cron.weekly内的脚本

22  4  *  *  0    root run-parts /etc/cron.weekly

#每月去执行/etc/cron.monthly内的脚本

42  4  1  *  *    root run-parts /etc/cron.monthly

注意”run-parts”这个参数,如果去掉这个参数的话,后面就要写要运行的某个脚本名,而不是文件夹名。例如:11 2 21 10 * rm -rf /mnt/fb

以下是两个cron语句的例子(在 /etc/crontab 文件里)。前者用来晚间备份 /etc 目录,后者运行Analog程序处理服务器的统计信息。

Linux代码

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

以下是cron语句中的字段与字段说明:

字段 说明

1 分钟(0-59)

2 小时(0-23)

3 日期(1-31)

4 月份(1-12;或英文缩写Jan、Feb等)

5 周几(0-6,0为周日;或单词缩写Sun、Mon等)

6 用户名(执行命令时以此用户的身份)

7 要执行的命令(路径)

现在来看第一行:

Linux代码

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

这条语句将在每天的凌晨3点12分 (03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

这条语句可以变得稍微复杂一点:

Linux代码

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

它将在6月13日周一的15:30 运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

以下语句可以达到同样的效果:

Linux代码

30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

如果你想以用户joey的身份每小时的第15分钟 运行某个程序,可以使用:

Linux代码

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

其中的星号(*)是通配符,表示cron将忽略这个字段。

如果你想每两小时 就运行某个程序,可以在小时字段里使用 */2 。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

Linux代码

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分 运行某个程序,可以在分钟字段使用 15,30 :

Linux代码

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

如果你想在每月的第一周(即1号到7号)每天的指定时间 运行某个程序,可以在日期字段使用 1-7 :

Linux代码

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

这条语句将在每月的第1-7日每两小时的15分和30分 (02:15,02:30……22: 15,22:30等)运行 /usr/bin/somecommand 命令。

如果你想在每天的16:18 执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

Linux代码

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为 >> /home/user/somecommand.log 2>&1 。

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apache

总结

查看当前用户的cron配置,使用 crontab -l

编辑当前用户的cron配置,使用 crontab -e

删除当前用户的cron配置,使用 crontab -r

以root身份查看/编辑/删除某用户的cron配置,在命令后加上 -u USERNAME

配置系统级的任务,编辑 /etc/crontab 文件