工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处)
crontab是一个用来设置、删除或显示供守护进程cron执行的定时任务的命令。每一个用户都可以拥有属于自己的定时任务,定时任务文件默认以用户名命名,并放在/var/spool/cron目录,该目录普通用户无访问权限。
可以通过cron.allow 和 cron.deny文件管理用户使用cron服务的权限。如果cron.allow存在,用户必须列在其中才会被允许使用cron服务;如果cron.deny存在,被列在其中的用户禁止使用cron服务;如果两者都不存在,只有超级用户才能使用cron服务。在CentOS中,这两个文件放在/etc中,默认只存在cron.deny文件,且为空。这就表示在CentOS中,默认所有的用户均有cron的使用权限。
1. 命令格式
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
crontab -n [ hostname ]
crontab -c
2. 命令功能
为个人用户维护定时任务文件
3. 命令选项
-u user
编辑某个用户的cron,只用root可以使用此参数为别的用户设置cron服务。也可用于给用户指定crontab文件。
-l
列出当前用户的crontab。
-r
删除当前用户的crontab。
-e
编辑当前用户的crontab,默认使用vi,或者是由 VISUAL或EDITOR环境变量指定的编辑器。
-i
与-r一起使用,用来询问用户是否直接删除crontab。
4. 实例
实例1:列出当前用户的定时任务
[::][dodmaster@mha3 ~]$ crontab -l
* * $HOME/.DailyShell/hislogclear.sh
* * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/voice
* * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/data/
* * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/sms/
实例2:root用户编辑用户martin的定时任务
[::][root@mha3 ~]# crontab -u martin -e
实例3:为用户martin指定定时任务文件
[::][root@mha3 ~]# crontab -u martin martincron
5. cron文件语法
首先,我们打开/etc/crontab文件,我们将会看到如下内容:
[::][dodmaster@mha3 etc]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/ # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
该文件是存放系统执行的定时计划,其中前四行用于设置cron服务运行的环境变量:SHELL、PATH、HOME分别指定了cron服务运行时的SHELL环境变量、PATH环境变量和HOME环境变量,这里不再赘述。MAILTO则表示cron运行的任务输出以电子邮件的形式发送到指定用户,如果该变量的值为空,则不会发送邮件。余下几行的内容说明了系统定时任务的具体书写格式。
minute | 分钟,取值范围0-59 |
hour | 小时,取值范围0-23 |
day of month | 日,取值范围1-31 |
month | 月,取值范围1-12,或者使用英文缩写jan,feb,mar,apr ... |
day of week | 星期,取值范围0-6,0或7表示星期日,或者使用英文缩写sun,mon,tue,wed,thu,fri,sat |
user-name | 执行该定时任务的用户 |
command | 具体执行的命令,可以是一个简单的命令,也可以是一个脚本,或者是一个目录。如果是一个目录,则表示执行目录中的所有脚本,目录的前面必须加上run-parts。 |
1)星号(*)表示取值范围内的所有值。例如,*在hour的位置,表示每小时执行一次。
2)连字符(-)表示一个范围。例如,8-12表示8、9、10、11、12。
3)逗号(,)表示分割指定的数值。例如:3,5-7,9表示3,5,6,7,9。
4)正斜杠(/)表示步进值。例如,分钟的位置为*/5,表示每五分钟执行一次。
除了root用户以外的所有用户定义的crontab计划任务都存放在/var/spool/cron目录,通过crontab -e命令编辑,格式与/etc/crontab相同,可以不用指定user-name。
cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的所有文件,并依此执行。
6. 实例
实例1:每周末的凌晨一点钟执行一次系统的raid-check
* * Sun root /usr/sbin/raid-check
实例2:每天的4:02am分root用户执行/etc/cron.daily目录下的所有脚本,run-parts参数表示执行后面目录中的所有脚本。
* * * root run-parts /etc/cron.daily
实例3:每天的8-18每四小时,dodmaster用户执行hislogclear.sh脚本,即8:44,12:44,16:44,20:44四个时间点,会执行该脚本。
[::][dodmaster@mha3 ~]$ crontab -l
8-20/4 * * * $HOME/.DailyShell/hislogclear.sh
实例4:每五分钟执行一次
*/ * * * * echo "every five minute to do it" >> time.txt
实例5:每个工作日下午八点执行
20 * * 1-5 echo "every workday 20:00 to do it" >> time.txt
实例6:每分钟的30秒时执行,因为cron服务是每分钟被唤醒一次,所以要执行精确到秒的任务需要借助sleep命令。
* * * * * sleep ; echo "every minute 30 second to do it" >> time.txt
实例7:每20秒执行一次,即表示在每分钟的0秒、20秒、40秒各执行一次(也可以是其他的步长是20秒的值,例如:5s、25s、45s)
* * * * * echo "every 20 second to do it" >> time.txt
* * * * * sleep ; echo "every 20 second to do it" >> time.txt
* * * * * sleep ; echo "every 20 second to do it" >> time.txt
参考资料:
http://www.cnblogs.com/dingyingsi/archive/2013/04/16/3023623.html
http://blog.csdn.net/xiyuan1999/article/details/8160998
http://blog.chinaunix.net/uid-7552018-id-182133.html
工作中常用的Linux命令:crontab命令的更多相关文章
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
- 工作中常用的Linux命令:ipcs/ipcrm命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...
- 工作中常用的Linux命令:find命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...
- 工作中常用的Android系统ADB命令收集
工作中常用的Android系统ADB命令收集如下:先收藏以备以后查阅! adb --help //adb帮助 adb start-server //启动adb server adb kill-s ...
- 【基础】工作中常用的linux命令,经常会被面试官问到
前言 面试经常会问到一些Linux操作命令,下面就工作中常用的和面试问的频率较高的命令做详细描述. 常用命令 修改密码:passwd 用户名 切换用户名:su 用户名 查看当前路径:pwd 调整路径: ...
- 工作中常用的 Linux 命令
awk 示例: env变量值如下,需要获得pkg_url的链接值: {"name": "michael", "sex": "mal ...
- 在工作中常用的Linux命令
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 之前写过一篇 < 在公司做的项目和自己在学校做 ...
- 工作中常用的Linux命令介绍与实践
前言 做后端开发的同学,一般都会接触到服务器,而我们现在的系统用的比较多的服务器系统就是linux了,平时多多少少也会接触到一些linux下的shell命令.我们来介绍下linux一些常用的命令和使用 ...
- 工作中常用的Linux命令:crontab命令,定时任务执行命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
随机推荐
- Scalaz(39)- Free :a real monadic program
一直感觉FP比较虚,可能太多学术性的东西,不知道如何把这些由数学理论在背后支持的一套全新数据类型和数据结构在现实开发中加以使用.直到Free Monad,才真正感觉能用FP方式进行编程了.在前面我们已 ...
- ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】
加载本地地图服务,并实现要素的查询.(不足之处还请指点)具体代码如下: <!DOCTYPE html> <html dir="ltr"> <head& ...
- 很漂亮的SweetAlert.js 弹出层
在线实例 实例演示 使用方法 swal("Here's a message!") 复制 参数详解 参数 默认值 描述 title null(required) 窗口的名称.可以通过 ...
- Quartz.NET开源作业调度框架系列(五):AdoJobStore保存job到数据库
Quartz.NET 任务调度的核心元素是 scheduler, trigger 和 job,其中 trigger(用于定义调度时间的元素,即按照什么时间规则去执行任务) 和 job 是任务调度的元数 ...
- 用Phaser来制作一个html5游戏——flappy bird (二)
在上一篇教程中我们完成了boot.preload.menu这三个state的制作,下面我们就要进入本游戏最核心的一个state的制作了.play这个state的代码比较多,我不会一一进行说明,只会把一 ...
- JS魔法堂:jsDeferred源码剖析
一.前言 最近在研究Promises/A+规范及实现,而Promise/A+规范的制定则很大程度地参考了由日本geek cho45发起的jsDeferred项目(<JavaScript框架设计& ...
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3360938.html 如新浪微博下面的标签切换功能,我以前也写过一篇博文(http:/ ...
- Scrum三大角色特点
灵感来自于一段冷笑话: 一天,一头猪和一只鸡在路上散步,鸡看了一下猪说,“嗨,我们合伙开一家餐馆怎么样?”,猪回头看了一下鸡说,“好主意,那你准备给餐馆起什么名字呢?”,鸡想了想说“餐馆名字叫火腿和鸡 ...
- 优化MySchool数据库(二)
优化School数据库(TSQL建库建表建约束) 使用T_sql代码建库.建表.建约束: 建库: Create database HotelManagerSystem on ( ---- 数据文件-- ...
- OC中的面向对象语法3
一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...