Crontab 计划任务
有一部分工作,需要某个时间开始,每天执行,每间断一段时间执行.
这个时候就需要了crontab.
crontab 管理着linux上一些定期的任务.log rotate,logwatch 等等
废话不多说来看crontab,
环境:Centos 6.6
[root@Centos etc]# crontab -h
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
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 deleting user's crontab)
-s (selinux context)
-e 是编辑crontab
-l 是列出来
-r 是删除
-i 删除前提示一下
-s selinux的东东..
1. 先来讲讲格式:
[root@HYG 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 * * * root /usr/sbin/ntpdate cn.pool.ntp.org >/dev/null >&
☆ 分 时 日 月 周 命令
这个配置文件解释的也比较清楚了
★ ntp的这条crontab是我自己加的,/etc/crontab需要自己加上用户(user-name),crontab -e 命令的cron不需要加用户.写在/etc/crontab中的cron使用命令crontab -l 是看不到的.
★ 最小的时间间隔是分,所以只能控制到分钟了如果需求到秒的话可以脚本自行控制 sleep(10)
★ 权值,什么是权值 十进制 123 一百二十三 为什么是一百二十三 因为百位上是1 十位是2 个位是3, crontab 一样.分位代表的分钟,时代表着小时,依次类推(很多人这里很糊涂)
★ 特殊符:
* 代表任意,很多人不理解,什么叫任意.. 如果*在分钟位上,那么就是任意分钟.分钟有多少(0,1,2,3,……,59),任意就是每一分钟都可以触发.*就等价于 0-59
- 范围取值, (1-3) 就是1,2,3
, 间隔符,将不同的值区分开,没有其他的意义.
/ 步长,频率,间隔多久, 1-9/2 就是每间隔2, 等价于1,3,5,7,9
★ Centos 就这么几个特殊符号,没有#之类的其他符号(其他的定时可能会更多).
★ 周和日,月是或的关系,不是与.00 01 01 * 6 代表每月01号或者周六 01时执行.并不是每月01号并且是周六 01时执行,如果需要判断周几,可用脚本自行判断
2. 时间样例:
☆ 看看上边那个ntp的例子:每天,每月,1点 00分执行
☆ 反过来说一个, 每天的 3点,15点分别执行一次脚本:
* 3,15 * * * 看到很多人会是这种写法,这种写法是错的.因为隐藏掉了分钟的说法所以很多人都会理解为分钟是* 这样写的话是3点,15点的任意分钟执行脚本,3点就要执行60次脚本.
00 3,15 * * * 正确的写法,3,15点整执行
☆ 10 3,15 * * * 这样也算是对的,看你的需求了.3点10分的是执行.最好让所有的脚本都岔开执行.
☆ 00 3-5 * * * 范围都好理解 3点到5点 00分的时候执行 3:00 4:00 5:00 就会执行
☆ 00 5 */2 * * 5点整执行,现在不是每天了,是每隔一天,执行一天休息一天 这个/不太好理解.
☆ 1点到8点每小时执行,9-24点每2小时执行,05分的时候执行脚本
05 1-8,9-24/2 * * *
3. 命令添加crontab:
crontab -e 会进入一个vi的编辑界面:
* * * /usr/sbin/ntpdate cn.pool.ntp.org >/dev/null >&
00 01 * * * /bin/bash /usr/locl/bin/test.sh >/dev/null 2>&1
前一段是时间 命令 参数
这里想说的是如果执行脚本就加上/bin/bash,并且脚本路径用绝对路径.保证有权限,
4. 来看看crontab的配置文件:
[root@Centos tmp]ls /etc/ | grep cron
cron.d/
cron.daily/
cron.deny
cron.hourly/
cron.monthly/
crontab
cron.weekly/
crontab: 上边已经看过了.简单解释一下SHELL就是shell环境,PATH就是PATH变量,MAILTO邮件发给谁,HOME默认此 shell 的家目录所在
cron.allow: 将可以使用 crontab 的账号写入其中,若不在这个档案内的使用者则不可使用 crontab
cron.deny: 将不可以使用 crontab 的账号写入其中,若未记录到这个档案当中的使用者,就可以使用crontab。
cron.allow比cron.deny优先级高,一般我们都保留一个cron.deny 一个账号一行.
cron.weekly/ cron.monthly/ cron.daily/ cron.hourly/ 这几个目录里边放的是脚本,每天每月每天每小时,都会执行相应里边的脚本.所以每天执行一次的脚本也可以直接放到cron.daily里边.你也可以自己创建目录cron.min
*/2 * * * * root run-parts /etc/cron.min 使用run-parts
cron.d/ 这个是从crontab分裂出来,如果我们自己有编辑/etc/crontab配置文件的需求可以自己写在cron.d/下边,里边有几个样例自己可以看看.
5.使用命令crontab -e 编辑的cron存放在哪里(我之前编辑了几个crontab,如果你没有的话可以自己编辑几个crontab)
[root@Centos tmp]# ls /var/spool/cron/
root
以用户名为名命名的文件.
[root@HYG cron]# cat root
-,-/ * * * * echo "abc">>/tmp/abc.txt
查看内容正是我们自己写的cron,我们写的cron 就保存在/var/spool/cron/ 并存在已用户名为名的文件.
[root@HYG cron]# echo " * * * * * echo hahaa >>/tmp/haha.txt" >>root
[root@HYG cron]# cat root
40-45,45-50/2 * * * * echo "abc">>/tmp/abc.txt
* * * * * echo hahaa >>/tmp/haha.txt
[root@HYG cron]# crontab -l
40-45,45-50/2 * * * * echo "abc">>/tmp/abc.txt
* * * * * echo hahaa >>/tmp/haha.txt
ls /tmp/
haha.txt
我们手动echo一条道root文件中. crontab -l 就可以直接查看到,并且不需要重启crontab
6. 重启crontab
service crond stop
service crond start
更多的详情可以查看鸟哥的私房菜里边写的比较全,也可以 man 5 crontab
Crontab 计划任务的更多相关文章
- linux crontab 计划任务 atd和windows下的计划任务
crontab 命令 如果发现您的系统里没有这个命令,请安装下面两个软件包. vixie-cron crontabs crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类 ...
- centos crontab 计划任务 设置与查看
centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的cron ...
- crontab计划执行脚本详解
Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序. 一.安装crontab yum install vixie-cron #安装 chkcon ...
- linux crontab 计划任务设置 (简结)
命令: crontab -l 查看当前运行的计划任务 crontab -e 编辑当前运行计划任务 修改或添加 VIM编辑器用法:按 i 键进入编辑文本状态, esc 结束编辑状态 , :wq ...
- crontab计划任务监控nginx服务器
#!/bin/bash ps axu |grep 'nginx' |grep -v 'grep' &>/dev/null ] then echo "准备重启nginx....& ...
- Linux crontab计划任务
1.cron计划任务的描述 cron计划任务允许用户根据“时间表”自动周期的完成任务某些任务. cron是一种system V服务,需要开启该服务才能使用. ...
- linux crontab 计划任务脚本
在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINUX中,周期执行的任务一般由cron ...
- linux crontab 计划任务编写
在linux中启动crontab服务: /etc/init.d/crond start crontab的命令格式 crontab -l 显示当前的crontab 文件(默认编写的crontab文件会保 ...
- crontab[计划任务],tar[压缩],grep[查找]
计划任务:1.新建一个计划任务:crontab -e -----> 3*/1 * * * * date >> /tmp/data.txt查看计划任务:crontab -l.如果超过6 ...
- 配置NTP和crontab计划任务
配置NTP网络时间客户端和设置计划任务 3.1问题 本例要求配置虚拟机server0,能够自动校对系统时间.相关信息如下: NTP服务器 ...
随机推荐
- DEVICE_OBJECT结构参数
typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT { CSHORT Type; USHORT Size ...
- MVC 使用AJAX POST上传图片的方式
我们来总结一下使用AJAX以POST方式上传图片的方法. 一.普遍的一种是以file的格式请求.在Request.Files中获取文件. public ActionResult UploadFile( ...
- Xcode中将图片放入Images.xcassets和直接拖入的区别
将图片放入Images.xcassets 在mainBundle里面Xcode会生成一个Assets.car文件,将我们放在Images.xcassets的图片打包在里面.(程序会变大(?)) 无论是 ...
- swift代码排版-参考
代码排版包括: 空行.空格.断行和缩进等内容.代码排版内容比较多工作量很多,但是非常重要. 空行 空行将逻辑相关的代码段分隔开,以提高可读性.下列情况应该总是添加空行: 类型声明之前. import语 ...
- (转)關於flashback query的ORA-01466錯誤
摘自:http://blog.sina.com.cn/s/blog_70a2bdb80100pqid.html 使用Oracle 10g 新特性flashback query來查詢過去修改並已提交的記 ...
- 如何判断一个C++对象是否在堆上(通过GetProcessHeaps取得所有堆,然后与对象地址比较即可),附许多精彩评论
在帖子如何判断一个C++对象是否在堆栈上 中, 又有人提出如何判断一个C++对象是否在堆上. 其实我们可以参照那个帖子的方法类似实现,我们知道堆就是Heap,在windows上我们可以通过GetPro ...
- 将汉字转为UTF-8编码
01./** 02. * 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名. 03. * @param s 原文件名 04. * @return 重新编码后的文件名 05. */ ...
- 探讨c#中的unchecked是什么意思,起什么作用?
Checked与Unchecked 对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”——System.OverflowException,在某些算法来讲不算真正的“异常”,相反这种溢 ...
- B - Network - uva 315(求割点)
题意:给一个无向连通图,求出割点的数量. 首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第一个数字代表后面的都和它存在边,0表示行输入的结束(很蛋疼的输入方式). 分析:割点的模板题 ...
- git命令使用方法
git安装包 http://c35.yunpan.360.cn/my/?sid=#%2F%E5%AE%89%E8%A3%85%E5%8C%85%2FGit%E5%AE%89%E8%A3%85%2F g ...