CentOS下crond定时任务详细介绍
目录
1、定时任务crond介绍...
2、crond定时任务限权...
3、Crontab用法...
4、Crontab命令的书写格式...
5、定时服务器时间同步...
6、写定时任务注意点..
7、调试定时任务...
1、定时任务crond介绍
1>定时任务软件种类
at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。
crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现。
anacron 无法周期性执行,只能以天为周期,但有个特点,在关机状态下未执行的任务,下次开机时可以补上执行
注:crontab为最常用的定时任务。
2>crontab工作
运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)
默认系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过/etc/cron.allow文件限制权限。
3>crontab支持两种状态:
a.直接编写计划任务;
b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定。
2、crond定时任务限权
可对各用户使用定时任务进行管理
1)拒绝用户使用crontab任务
在/etc/cron.deny中添加要拒绝的用户名,格式如下:
listen
nobody
noaccess
username1
username2
username3
.
2)允许用户访问crontab任务
在/etc/cron.allow中添加要允许的用户名,格式如下:
root
username1
username2
.
3)定期执行一个目录下的文件
在/etc/crontab中添加目录,格式如下:
01 * * * * root run-parts 目录
注:使用run-parts可定义定期执行的目录
4)限权测试
1>添加用户
[root@test ~]# useradd test
[root@test ~]# echo 123456 |passwd test--stdin #<==非交互模式创建密码
Changing password for user test.
passwd: all authentication tokensupdated successfully.
2>拒绝测试
[root@test ~]# cat /etc/cron.deny
test
[root@test ~]#
[root@test ~]# su - test
[test@test ~]$ crontab -e
You (test)are not allowed to use this program (crontab)
See crontab(1) for more information
在cron.deny中加入用户后,该用户没有权限编辑定时任务
3>允许测试
[root@test ~]# cat /etc/cron.allow
test
[root@test ~]# su - test
[test@test ~]$ crontab -e #<==test用户编辑成功
*/1 * * * * echo successful >/tmp/a.log
[test@test ~]$ crontab -l
*/1 * * * * echo successful >/tmp/a.log
在cron.allow中加入用户后,该用户能编辑定时任务
4>清空允许用户
[test@test ~]$ su - root
Password:
[root@test ~]# echo >/etc/cron.allow
[root@test ~]# su - test
[test@test ~]$ crontab -l #<==test用户连查看的权限都没有
You (test)are not allowed to use this program (crontab)
See crontab(1) for more information
[test@test ~]$ cat /etc/cron.deny
test
清空cron.allow允许用户后,该用户又被cron.deny拒绝,
得出结论:/etc/cron.allow优先于/etc/cron.deny配置
3、Crontab用法
[root@yang1 data]# crontab --help #<==注:crontab –l –e都是直接操作/var/spool/cron/下当前用户名的文件
usage: crontab [-u user] file #<==指定某用户如crontab –u yang2 –e,编辑yang2家目录下的crontab
crontab [-u user] [ -e | -l | -r ]
(default operation is replace,per 1003.2)
-e (edit user's crontab) #<==编辑当前用户的定时任务
-l (list user's crontab) #<==查看当前用户的定时任务
-r (delete user's crontab) #<==删除定时任务
-i (prompt before deletinguser's crontab) #<==删除crontab文件内容,删前会有提示
-s (selinux context)
注:crontab –e 编辑定时任务,退出时可以检查语法,直接编辑/var/spool/cron/root不能。如果大批量添加任务,则使用echo追加。
cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。
4、Crontab命令的书写格式
|
* * * * * /bin/sh /scripts/yy.sh |
|
分 时 日 月 周 命令和文件路径 |
|
(00-59) (0-23) (1-31) (1-12) (0-6) |
|
所用符号表示意思 |
|
* 星号每的意思 |
|
- 减号连续一段时间,如:00 17-19 * * * cmd 每天下午17点,18点,19点执行一次命令 |
|
, 逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令 |
|
/n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令 |
1)举例:
30 12-16/2 * ** cmd
每天的中午12点到下午4点间,每隔2小时执行一次
* 23-7/1 * * 25pxd
注:这是一个错误的命令
日和周不能同时用,若要以月为间隔,则日或周必有一个有值
其它如:小时上有值,则分钟上也要有值
*/1 * * ** echo yangrong >>/var/log/yy > /dev/null 2>&1
每隔一分钟把yangrong打印到yangrong1文件中,但该命令无法执行,因为>>与>/dev/null不可同时使用
2)/dev/null 2>&1解释
|
0是标准输入 使用<或<< |
|
1是标准输出 使用>或>> |
|
2是标准错误输出 使用2>或2>> |
|
>/dev/null 2>&1 即错误输出与标准输出全部重定向到空,可以写成1>/dev/null 2>/dev/null |
3)关于重定向的作用
重定向到空可以避免碎片文件占用inode资源
重定向到一个指定log里,可以看任务是否执行
4)关于导致磁盘inode满情况分析
定时任务执行成功or失败时,程序会向上层发送mail,由于平时工作中不打开sendmail功能,所以邮件会存储在临时目录/var/spool/clientmqueue,随着执行的任务次数多,文件也会越来越多,直到某一天,添加文件时,提示No space left on device,主要问题原因不在于垃圾文件会占很大空间,而在于每个文件会占用inode节点。(centos6.4默认不装sendmail,可能不会导致这个问题发生)。
所以crontab规则后需加 /dev/null 2>&1。
注:>> 与 >/dev/null 2>&1不可同时存在,不然无法执行
5)重启crond服务
/etc/init.d/crond status #查看当前运行状态
/etc/init.d/crond restart #重启
/etc/init.d/crond reload #平滑重启
5、定时服务器时间同步
1)手动同步
[root@yang1 data]# which ntpdate
/sbin/ntpdate
[root@yang1 data]# /sbin/ntpdate time.windows.com
2)自动同步(使用定时任务)
#sync systime by yangrong at 2013-9-4
*/5 * * * * /sbin/ntpdate time.windows.com>/dev/null 2>&1
注:当局域网内的服务器足够多时(500+),则需自己在局域网搭建ntp server
6、写定时任务注意点:
掌握了下面7点,写定时任务就不在犯错。
|
序号 |
注意点 |
|
1 |
每个任务添加注释,谁写的,什么时间写的,完成什么需求? |
|
2 |
执行脚本使用/bin/sh(防止脚本无执行权限),要执行的文件路径是从根开始的绝对路径(防止找不到文件) |
|
3 |
尽量把要执行的命令放在脚本里,然后把脚本放在定时任务里。对于调用脚本的定时任务,可以把标准输出错误输出重定向到空。 |
|
4 |
定时任务中带%无法执行,需要加\转义 |
|
5 |
如果时上有值,分钟上必须有值 |
|
6 |
日和周不要同时使用,会冲突 |
|
7 |
>>与>/dev/null 2>&1不要同时存在 |
书写举例:
#backup mysql byyangrong at 2013-9-4
30 4 * * * /bin/shtar_mysql.sh >/dev/null 2>&1
7、调试定时任务
一个任务不能轻易的直接推上线上服务器,需要在测试服务器上测试好。
|
序号 |
调试方法 |
|
1 |
增加频率调试任务,如:生产环境2小时一次,测试机2分钟一次 |
|
2 |
加快时间调试任务,如:生产环境1天后执行,则添加任务后修改设备时间 |
|
3 |
重定向到一个日志里,查看任务执行情况。一个是定时任务后加log,一个是脚本后加log |
|
4 |
环境变量可能导致问题 |
|
5 |
通过日志定位问题。 tail /var/log/cron |
CentOS下crond定时任务详细介绍的更多相关文章
- linux下top命令详细介绍
linux下top命令详细介绍 top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu.内存的使用)占用状况,top命令的执行结果是一个动态显 ...
- (转载)Centos下Elasticsearch安装详细教程
原文地址:http://www.cnblogs.com/sunny1009/articles/7874251.html Centos下Elasticsearch安装详细教程 1.Elasticsear ...
- Centos下Elasticsearch安装详细教程
Centos下Elasticsearch安装详细教程 1.Elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 ...
- CentOS安装Oracle数据库详细介绍及常见问题汇总
一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命 ...
- 转---CentOS安装Oracle数据库详细介绍及常见问题汇总
一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命 ...
- Centos下运行定时任务Crontab命令介绍
1.Cron的启动与关闭 因为Cron是Linux的内置服务.能够用下面的方法启动.关闭这个服务: /sbin/service crond start //启动服务 /sbin/s ...
- CentOS下安装XAMPP详细教程
现在php的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷.windows下面的安装,就是下一步.下一步,没什么好说的,详细说一下linux下面的安装,这里以CentOS为例 ...
- CentOS下安装XAMPP详细教程(转)
[原文]http://blog.csdn.net/hel12he/article/details/49781813 现在PHP的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷 ...
- Linux下VI命令详细介绍
vi 是"Visual Interface" 的简称,它在Linux 上的地位就仿佛Edit 程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且 ...
随机推荐
- MySQL中的insert ignore into, replace into等的一些用法总结
在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_ ...
- Java--剑指offer(8)
36.输入两个链表,找出它们的第一个公共结点. 解题思路:这里主要是把两个链表的节点都放入两个栈中,这样就可以按照出栈的方式来比较节点,因为单链表只要是有相同的节点,那么之后的节点也都是一样的,所以如 ...
- java 上传图片 并压缩图片大小
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...
- Jenkins+svn+maven
首先我们在我们的服务器上安装好svn和maven 这里在前两步骤基本上没有啥问题,主要就是在Jenkins的步骤我弄了好长时间,这里记录一下 Jenkins的问题我是在这个网址解决的:http://b ...
- javascript 对象实例
创建对象: var o = new Objct(); //创建一个空对象 var o = {}; var a = new Array(); //创建一个空数组 var a = []; var d = ...
- JS简单加密
//简单的jS加密解密//code为对应的字符串,h为(2,8,10,16)就是要转成的几进制function en(code, h) { var monyer = new Array();var i ...
- Maven简单介绍
Maven是基于项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建规则 ...
- KM算法及其优化的学习笔记&&bzoj2539: [Ctsc2000]丘比特的烦恼
感谢 http://www.cnblogs.com/vongang/archive/2012/04/28/2475731.html 这篇blog里提供了3个链接……基本上很明白地把KM算法是啥讲清楚 ...
- Mysql 中 iddata1的缩小步骤
原因就不多说了,,,, 直接上干货. 1. 备份数据库 mysqldump -q -uroot -ppassword --add-drop-table --all-databases >all1 ...
- 浏览器上网 (Safari & Chrome)
浏览器上网 (Safari & Chrome) Command + L = 光标移到地址框 Command + R = 刷新页面 Command + + = 大屏幕的时候很实用,放大页面,基本 ...