有一部分工作,需要某个时间开始,每天执行,每间断一段时间执行.
这个时候就需要了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 计划任务的更多相关文章

  1. linux crontab 计划任务 atd和windows下的计划任务

    crontab 命令 如果发现您的系统里没有这个命令,请安装下面两个软件包. vixie-cron crontabs crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类 ...

  2. centos crontab 计划任务 设置与查看

    centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的cron ...

  3. crontab计划执行脚本详解

    Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序. 一.安装crontab yum install vixie-cron  #安装 chkcon ...

  4. linux crontab 计划任务设置 (简结)

    命令: crontab  -l  查看当前运行的计划任务 crontab  -e  编辑当前运行计划任务 修改或添加 VIM编辑器用法:按 i 键进入编辑文本状态, esc 结束编辑状态 , :wq ...

  5. crontab计划任务监控nginx服务器

    #!/bin/bash ps axu |grep 'nginx' |grep -v 'grep' &>/dev/null ] then echo "准备重启nginx....& ...

  6. Linux crontab计划任务

    1.cron计划任务的描述        cron计划任务允许用户根据“时间表”自动周期的完成任务某些任务.        cron是一种system V服务,需要开启该服务才能使用.        ...

  7. linux crontab 计划任务脚本

    在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINUX中,周期执行的任务一般由cron ...

  8. linux crontab 计划任务编写

    在linux中启动crontab服务: /etc/init.d/crond start crontab的命令格式 crontab -l 显示当前的crontab 文件(默认编写的crontab文件会保 ...

  9. crontab[计划任务],tar[压缩],grep[查找]

    计划任务:1.新建一个计划任务:crontab -e -----> 3*/1 * * * * date >> /tmp/data.txt查看计划任务:crontab -l.如果超过6 ...

  10. 配置NTP和crontab计划任务

                                    配置NTP网络时间客户端和设置计划任务 3.1问题 本例要求配置虚拟机server0,能够自动校对系统时间.相关信息如下: NTP服务器 ...

随机推荐

  1. centos 下使用sublime

    CentOS 之 Sublime text3 安装及配置(不支持中文输入) sublime text 的界面友好,自动补全功能也不错. (本来用vim+php_function.txt的形式进行补全的 ...

  2. 用C实现一个简单的对拍器——致每个曾经为求AC披星戴月的程序员们

    大一新生,首次创作,虚心受教. 实现思路: 一.需要一个输入文件(input.txt),两个对拍程序(main1.exe,main2.exe) 二.将标准输入重定向为input.txt.将标准输出分别 ...

  3. C++Primer charpter1.

    一.输入输出流 endl:会刷新buffer.刷新之后你才能看到.不手动用endl的话,就只能依靠系统自动刷.程序崩溃的话,你看到的调试信息可能是错误的. >>:   两个连续的符号 ci ...

  4. PHP浮点数的一个常见问题的解答

    作者: Laruence 本文地址: http://www.laruence.com/2013/03/26/2884.html 转载请注明出处 关于PHP的浮点数, 我之前写过一篇文章: 关于PHP浮 ...

  5. START WITH CONNECT BY PRIOR 链表查询

    使用场景:排序 设计思路,id为主键,index为顺序,index存前一个节点的id,当然,按照这个思路可以实现双向链表的(preindex存前一个节点,nextindex存下一个节点) 这样的话排序 ...

  6. testng,soket write error错误

    网上解决手段:  testng 工程报错java.net.SocketException SocketException: Software caused connection abort · Iss ...

  7. Java was started but returned exit code=13

    安装Eclipse(32位)后打开报错:Java was started but returned exit code=13 解决方法: 1,首先我查看了我当前安装的JDK版本,发现是64位的: 2, ...

  8. 安卓各文件存储路径汇总(Android file path)

    写下来,省得以后不记得到处翻: Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /ca ...

  9. 如何统一修改 Altium Designer 中的字符大小

    如下图 1 所示: Q1. Q2. C1. C2. R1 等等的字符你想统一修改他们的大小.原来是 Text Height( 100mil), Text Width( 12mil),想改成 Text ...

  10. curl http认证

    有些站点需要http认证.(apache认证:http://blog.csdn.net/zf213/article/details/4252592) 如果访问http://test:123789@xx ...