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服务器 ...
随机推荐
- centos 下使用sublime
CentOS 之 Sublime text3 安装及配置(不支持中文输入) sublime text 的界面友好,自动补全功能也不错. (本来用vim+php_function.txt的形式进行补全的 ...
- 用C实现一个简单的对拍器——致每个曾经为求AC披星戴月的程序员们
大一新生,首次创作,虚心受教. 实现思路: 一.需要一个输入文件(input.txt),两个对拍程序(main1.exe,main2.exe) 二.将标准输入重定向为input.txt.将标准输出分别 ...
- C++Primer charpter1.
一.输入输出流 endl:会刷新buffer.刷新之后你才能看到.不手动用endl的话,就只能依靠系统自动刷.程序崩溃的话,你看到的调试信息可能是错误的. >>: 两个连续的符号 ci ...
- PHP浮点数的一个常见问题的解答
作者: Laruence 本文地址: http://www.laruence.com/2013/03/26/2884.html 转载请注明出处 关于PHP的浮点数, 我之前写过一篇文章: 关于PHP浮 ...
- START WITH CONNECT BY PRIOR 链表查询
使用场景:排序 设计思路,id为主键,index为顺序,index存前一个节点的id,当然,按照这个思路可以实现双向链表的(preindex存前一个节点,nextindex存下一个节点) 这样的话排序 ...
- testng,soket write error错误
网上解决手段: testng 工程报错java.net.SocketException SocketException: Software caused connection abort · Iss ...
- Java was started but returned exit code=13
安装Eclipse(32位)后打开报错:Java was started but returned exit code=13 解决方法: 1,首先我查看了我当前安装的JDK版本,发现是64位的: 2, ...
- 安卓各文件存储路径汇总(Android file path)
写下来,省得以后不记得到处翻: Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /ca ...
- 如何统一修改 Altium Designer 中的字符大小
如下图 1 所示: Q1. Q2. C1. C2. R1 等等的字符你想统一修改他们的大小.原来是 Text Height( 100mil), Text Width( 12mil),想改成 Text ...
- curl http认证
有些站点需要http认证.(apache认证:http://blog.csdn.net/zf213/article/details/4252592) 如果访问http://test:123789@xx ...