首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

crontab linux施用

2012-07-02 
crontablinux使用#修改当前用户的计划crontab -e??//01 * * * * 不能留有空格01 * * * * /home/zlb/mysql_

crontab linux使用

#修改当前用户的计划
crontab -e??

//01 * * * * 不能留有空格
01 * * * * /home/zlb/mysql_dump/backup -run >> /home/zlb/mysql_dump/logs/backup_log.txt
#*/1 * * * * ls >> ~/ls.txt

#重启

/etc/init.d/cron restart

-----------------------------------------------------

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
  service crond start //启动服务
  service crond stop //关闭服务
  service crond restart //重启服务
  service crond reload //重新载入配置
  你也可以将这个服务在系统启动的时候自动启动:


  chkconfig crontab on


  现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:
  1.直接用crontab命令编辑
  cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
1、linux任务调度的工作主要分为以下两类:
???? *系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
???? *个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
2.crontab命令选项:
???? -u指定一个用户,
???? -l列出某个用户的任务计划,
???? -r删除某个用户的任务,
???? -e编辑某个用户的任务
3.cron文件语法:
?????????? 分???? 小时?? 日?????? 月?????? 星期???? 命令
???????? 0-59?? 0-23?? 1-31?? 1-12???? 0-6???? command???? (取值范围,0表示周日一般一行对应一个任务)
4.记住几个特殊符号的含义:
???????? "*"代表取值范围内的数字,
???????? "/"代表"每",
???????? "-"代表从某个数字到某个数字,
???????? ","分开几个离散的数字
一、任务调度设置文件的写法
?????? 可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
具体格式如下:
?????? Minute Hour Day Month Dayofweek?? command
?????? 分钟???? 小时?? 天???? 月?????? 天每星期?????? 命令
每个字段代表的含义如下:
???? Minute???????????? 每个小时的第几分钟执行该任务
???? Hour?????????????? 每天的第几个小时执行该任务
???? Day???????????????? 每月的第几天执行该任务
???? Month???????????? 每年的第几个月执行该任务
???? DayOfWeek???? 每周的第几天执行该任务
???? Command?????? 指定要执行的程序
???? 在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:
5?????? *?????? *?????????? *???? *???? ls???????????? 指定每小时的第5分钟执行一次ls命令
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命令。 ]
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50?? 7?????? *???????????? *???? *???? root???? run-parts???? /etc/cron.daily?? [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
二、新增调度任务
新增调度任务可用两种方法:
???????? 1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
???????? 2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
三、查看调度任务
???????? crontab -l //列出当前的所有调度任务
???????? crontab -l -u jp?? //列出用户jp的所有调度任务
四、删除任务调度工作
???????? crontab -r?? //删除所有任务调度工作
五、任务调度执行结果的转向
???? 例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
???????? 30 5 * * * ls >/jp/test 2>&1
???? 注:2>&1 表示执行结果及错误信息。
编辑/etc/crontab 文件配置cron??
  cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:??
  SHELL=/bin/bash??
  PATH=/sbin:/bin:/usr/sbin:/usr/bin??
  MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号??
  HOME=/ //使用者运行的路径,这里是根目录??
  # run-parts??
  01?? *?? *?? *?? *???? root run-parts /etc/cron.hourly???????? //每小时执行/etc/cron.hourly内的脚本??
  02?? 4?? *?? *?? *???? root run-parts /etc/cron.daily?????????? //每天执行/etc/cron.daily内的脚本??
  22?? 4?? *?? *?? 0???? root run-parts /etc/cron.weekly?????? //每星期执行/etc/cron.weekly内的脚本??
  42?? 4?? 1?? *?? *???? root run-parts /etc/cron.monthly???? //每月去执行/etc/cron.monthly内的脚本??
  大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
例如:???????? 1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
???????? 2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务
11 2 21 10 * rm -rf /mnt/fb?

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

1.直接用crontab命令编辑

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

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

crontab -l //列出某个用户cron服务的详细内容

crontab -r //删除没个用户的cron服务

crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab -u root -l

再例如,root想删除fred的cron设置:crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

分钟 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)//0代表星期天

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

每天早上6点

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

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

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

2.编辑/etc/crontab 文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本

-----------------------------------------
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

-----------------------------------------
在过去的一年里,微软的windows 7大行其道,不过Linux系统也越来越受到欢迎,你对Linux系统了解么?你是Linux系统的应用者么?本文为你详细介绍Linux计划任务,为你在学习Linux计划任务时起一定的作用。

Linux有三种计划任务:
at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用)
cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行)
系统级别的计划任务及其扩展anacron:在一个指定时间间隔错过后自动执行任务

一、at服务:安排一个任务在未来执行,需要一个atd的系统后台进程

#at now+2 minutes 回车
>输入要执行的命令
>ctrl+d 结束输入

atq;查询当前的等待任务
用atq来查询,已经运行的任务,就消失了。这就是at计划任务的重点,只运行一次
atrm:删除等待任务
启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
格式:atrm 任务号
命令后面跟计划任务编号,如果不跟,就会删除这个用户所有的计划任务。

还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f 文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)

在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文件:/etc/at.allow和/etc/at.deny

如果你要让哪个用户不能使用计划任务,就直接把他的用户名写进去就可以了,一排只能写一个。
同时写入allow 及deny, 允许.

二、cron服务

上面已经简单介绍了cron的一些进程和控制。下面我们来看看cron怎么实现。
相对与at,cron的优点就是能够周期性的执行某个命令,at却只能执行一次
cron的后台进程名字是crond ,cron也是system V的服务,所以我们可以service crond start|stop 来启动和关闭此服务,也可以使用chkconfig或者ntsysv来选择cron服务的默认开启,这些命令在以前我们都讲过的

#crontab -e????????????? 编辑当前用户的cron表
#crontab -l?????????????? 查看当前用户的cron表
#crontab -r????????????? 删除当前用户的cron进程
#crontab -u 用户名 以某用户的身份来控制cron表
还有个重要的知识点,就是当用户的计划任务建立后是存放在/var/spool/cron这个目录
当使用crontab -e编辑当前用户的cron表后,会出现一个vi文件,cron的格式是这样的。分成两列,左边是时间,右边是运行的命令。时间是由5个部分组成。
例:
* * * * *????????? wall hello everyone
5 个星号分别代表:minute hour day-of-month month-of-year day-of-week 分时日月周 ,而wall hello everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播hello everyone。具体时间大家可以自己定义。如果要每两分钟发送就用*/2代替第一个*。也可以是用具体时间来表示。
Crontab –e 编辑的任务不要加入用户名

第一个*星号代表个小时的第几分钟:minute 范围是从0-59
第二个*星号代表每天的第几个小时:hour 范围是从0-23
第三个*星号代表每月的第几个日:day-of-month 范围从1-31
第四个*星号代表没年的第几个月:month-of-year 范围从1-12
第五个*星号代表每周的星期几:day-of-week 范围从0-6,其中0表示星期日
用户名:也就是执行程序要通过哪个用户来执行,这个一般可以省略;
命令:执行的命令和参数。
如果我要表示9月10日25分执行ls var/spool/cron任务怎么表示?
25 * 10 9 *???????? ls var/spool/cron

*/1 * * * 0 wall Hello redking.blog.51cto.com
*/?? 表示每多少分钟执行一次哈~

当制定了cron任务后,可以用crontab -l查看, 也可以到/var/spool/cron/目录查看。里面的文件名字就是对应用户的cron任务
可以使用crontab -r 来删除当前用户的cron

vim /etc/crontab 与crontab -e写入的定时运行有什么区别?
vim /etc/crontab:是系统级别定义的crontab,/etc/crontab的所有者和组都是root
crontab -e :是用户自定义的crontab,是所有的用户都可以写入的
两种方法记录的位置不一样,一个在/etc/ 另一个在/var/ 里面。都被cron服务调用哈~

三、系统级别的计划任务及其扩展anacrontab
anacrontab就是系统计划任务的扩展文件:在一个指定时间间隔错过后自动执行任务
这个是系统设置好了,清理系统垃圾或者是自动执行某些脚本的系统任务,一般我们做了解就行了,不要更改
配置文件是/etc/anaconrtab

?? 1. # /etc/anacrontab: configuration file for anacron??
?? 2. # See anacron(8) and anacrontab(5) for details.??
?? 3. SHELL=/bin/sh??
?? 4. PATH=/sbin:/bin:/usr/sbin:/usr/bin??
?? 5. MAILTO=root?
?? 6. #####格式是这样的:period(频率.天数) delay(延迟,分钟) job-identifier command??
?? 7. 1?????? 65????? cron.daily????????????? run-parts /etc/cron.daily??
?? 8. 7?????? 70????? cron.weekly???????????? run-parts /etc/cron.weekly??
?? 9. 30????? 75????? cron.monthly??????????? run-parts /etc/cron.monthly?

SHELL:就是运行计划任务的解释器,默认是bash
PATH:执行命令的环境变量
MAILTO:计划任务的出发者用户
HOME:家目录为/
run-parts是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。
run-parts /etc/cron.hourly执行目录/etc/cron.hourly/之下的所有脚本/程序.
run-parts下面就是运行的命令

第一行的意思是:每天开机65分钟后就检查cron.daily文件是否被执行了,如果今天没有被执行就执行他
第二行的意思是:每隔7天开机后70分钟检查cron.weekly文件是否被执行了,如果一周内没有被执行就执行他

和at差不多,就是/etc/cron.deny这个配置文件来控制, 同时写入allow 及deny, 允许.以上就是Linux计划任务。

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd

热点排行