crontab用法与实例
导读 | 在Linux系统的实际使用中,可能会经常碰到让系统在某个特定时间执行某些任务的情况,比如定时采集服务器的状态信息、负载状况;定时执行某些任务/脚本来对远端进行数据采集等。这里将介绍下crontab的配置参数以及一些使用实例。 |
Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。在CentOS系统中,
- cat /etc/crontab
配置文件可以看到如下解释:
- SHELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- HOME=/
- # For details see man 4 crontabs
- # Example of job definition:
- # .---------------- minute (0 - 59)
- # | .------------- hour (0 - 23)
- # | | .---------- day of month (1 - 31)
- # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
- # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
- # | | | | |
- # * * * * * user-name command to be executed
前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash;第二行PATH变量指定了系统执行命令的路径;第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户;第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
在以上各个字段中,还可以使用以下特殊字符:
"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
格式:
- crontab [-u user] file
- crontab [ -u user ] [ -i ] { -e | -l | -r }
- • -u user:用于设定某个用户的crontab服务;
- • file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
- • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -r:从/var/spool/cron目录中删除某个用户的crontab文件。
- • -i:在删除用户的crontab文件时给确认提示。
- crontab有2种编辑方式:直接编辑/etc/crontab文件与crontab –e,其中/etc/crontab里的计划任务是系统中的计划任务,而用户的计划任务需要通过crontab –e来编辑;
- 每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。
- crontab中的command尽量使用绝对路径,否则会经常因为路径错误导致任务无法执行。
- 新创建的cron job不会马上执行,至少要等2分钟才能执行,可从起cron来立即执行。
- %在crontab文件中表示“换行”,因此假如脚本或命令含有%,需要使用\%来进行转义。
每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)
- * * * * * command
每小时的第3和第15分钟执行command
- 3,15 * * * * command
每天上午8-11点的第3和15分钟执行command:
- 3,15 8-11 * * * command
每隔2天的上午8-11点的第3和15分钟执行command:
- 3,15 8-11 */2 * * command
每个星期一的上午8点到11点的第3和第15分钟执行command
- 3,15 8-11 * * 1 command
每晚的21:30重启smb
- 30 21 * * * /etc/init.d/smb restart
每月1、10、22日的4 : 45重启smb
- 45 4 1,10,22 * * /etc/init.d/smb restart
每周六、周日的1 : 10重启smb
- 10 1 * * 6,0 /etc/init.d/smb restart
每天18 : 00至23 : 00之间每隔30分钟重启smb
- 0,30 18-23 * * * /etc/init.d/smb restart
每一小时重启smb
- * */1 * * * /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
- * 23-7/1 * * * /etc/init.d/smb restart
每月的4号与每周一到周三的11点重启smb
- 0 11 4 * mon-wed /etc/init.d/smb restart
每小时执行/etc/cron.hourly目录内的脚本
- 0 1 * * * root run-parts /etc/cron.hourly
本文主要讲解crontab如何使用和一些配置实例,下次我将给大家带来crontab配置生成的一些网站以及检查crontab配置是否符合预期的网站。
crontab用法与实例的更多相关文章
- HTML常用标签用法及实例
HTML常用标签用法及实例1.<!--1.注释-->2.<!--2.DOCTPYE 声明文档类型-->3.<!--3.a--> <a href="h ...
- C# Timer用法及实例讲解
摘自:http://www.cnblogs.com/xcsn/archive/2013/05/10/3070485.html 1.C# Timer用法及实例详解 http://developer.51 ...
- C# Timer用法及实例详解
C# Timer用法有哪些呢?我们在使用C# Timer时都会有自己的一些总结,那么这里向你介绍3种方法,希望对你了解和学习C# Timer使用的方法有所帮助. 关于C# Timer类 在C#里关于 ...
- Linux中crond服务与crontab用法
需要写个在Linux下定时更新系统的脚本,man crondtab 不甚详细,现将网络上的介绍列举如下: crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cr ...
- 【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- shell脚本学习之case用法及实例
case语句和判断语句[if...elif...else]功能类似;当在逻辑判断比较简单的情况下,比后者的代码量要少许多.case用法,用变量来匹配某值,如果匹配成功则执行它下面的命令,直到 ;;为止 ...
- matlab sign函数用法及实例
在MATLAB科学计算过程当中,我们经常需要对我们的计算公式或者计算结果检验其符号,,sign函数就给我们提供了这种方便,下面就通过实例介绍一下matlab sign函数 的用法,希望能够给您带来帮助 ...
- java中static、this、super、final用途、用法及实例
一.static 请先看下面这段程序: public class Hello { public static void main(String[] args){ //(1) System.out.pr ...
- crontab用法
在工作中有时需要定时执行某些操作,于是想到使用crontab来实现 crontab的用法: crontab file [-u user] 用指定的文件替代目前的crontab crontab - ...
随机推荐
- 工作流、业务流程管理和SOA
http://www.cnblogs.com/shanyou/archive/2009/03/29/1424213.html 工作流定义: The automation of a business ...
- for 循环的关键字 break和continue
for(int i=0;i<100;i++){ if(i==50){ continue:// 跳出当前循环,执行下面的循环,就是说,当i=50的时候,跳出循环,从i=51开始继续循环 //业务逻 ...
- join的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. t.join( ...
- js012-DO2和DOM3
js012-DO2和DOM3 本章内容: DOM2和DOM3的变化 操作样式的ODM API DOM 遍历与范围 DOM2级核心:在一级核心基础上构建,为节点添加了更多方法和属性 DOM2级视图:为文 ...
- 纯css3实现旋转的太极图
效果图: 代码如下: <!DOCTYPE html> <html> <head lang="zh"> <meta charset=&quo ...
- Java——新IO 缓冲区与Buffer
缓冲区和Buffer import java.nio.IntBuffer; //================================================= // File Na ...
- 如何在Mac OSX 10.10上安装GDB
http://ntraft.com/installing-gdb-on-os-x-mavericks/
- LaTeX 页眉页脚的设置
Latex中页眉页脚的设置 1. 首先要加页眉页脚的话,需要启动宏: 我通常用fancyhdr宏包来设置页眉和页脚. \usepackage{fancyhdr} 我们在 LaTeX 中先把 page ...
- map reduce
作者:Coldwings链接:https://www.zhihu.com/question/29936822/answer/48586327来源:知乎著作权归作者所有,转载请联系作者获得授权. 简单的 ...
- CSS 简介
CSS 简介 需要具备的基础知识 在继续学习之前,你需要对下面的知识有基本的了解: HTML XHTML CSS 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义 ...