• [整理]Linux Crontab命令总结


    一、crontab命令的基本介绍

    crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。
    通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

    二、开启crontab日志

    crontab默认情况下是不执行开启日志的,所以一开始写完后,不能执行,想查看日志,却找不到。所以先开启定时任务的日志来查看
    修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf 文件中的 #cron.* 前的 # 删掉;用以下命令重启rsyslog服务:

    service rsyslog restart;
    ``
    然后再重启crontab服务:
    

    service cron restart;

    网上很多人说开启,停止或者重启contab服务用命令 service crond restart,执行这个命令会报出 unrecognised service ,
    这里把 crond 改成 cron 就可以了。
    
    下面这个命令还可以查看crontab的状态
    

    service crond status; //ubuntu,Debian使用cron,Redhat使用crond

    
    # 三、cron相关操作
    /sbin/service crond start      //启动服务
    /sbin/service crond stop      //关闭服务
    /sbin/service crond restart  //重启服务
    /sbin/service crond reload  //重新载入配置
    service crond status  //查看crontab服务状态
    service crond start  //手动启动crontab服务
    
    crontab -l 查看当前用户的定时任务
    crontab -u root -l查看root用户的定时任务
    
    crontab -e  编辑crontab  如果需要root用户执行的权限,需要用sudo crontab -e 写在另一个配置文件中
    crontab -r  删除crontab
    
    
    # 四、创建bash脚本并设定cron定时执行
    
    

    建立一个用定时任务跑的bash脚本:
    [root@root test]# touch test.sh
    [root@root test]# vim test.sh

    编辑如下内容,将系统当前时间输出到 console.txt 文件然后保存,增加可执行权限
    /bin/echo date > /home/admin/test/console.txt

    [root@root test]# ll
    total 8
    -rw-r--r-- 1 root root 29 Mar 27 21:31 console.txt
    -rwxr-xr-x 1 root root 48 Mar 27 21:28 test.sh

    [root@root test]# chmod +x ./test.sh

    追加 crontab 定时任务,每分钟触发:
    [root@root test]# crontab -e
    00 02 * * * sh /home/admin/optbash/dailyBackup.sh
    00 02 * * * sh /home/admin/optbash/deleteDebugSql.sh

            • sh /home/admin/test/test.sh
              前面是已经存在的定时任务,后面执行test.sh脚本的是追加的

    保存后提示已经装载了新的定时任务
    "/tmp/crontab.HauiiV" 3L, 143C written
    crontab: installing new crontab
    再次查看定时任务列表,可以看到定时任务已经添加

    [root@root test]# crontab -l
    00 02 * * * sh /home/admin/optbash/dailyBackup.sh
    00 02 * * * sh /home/admin/optbash/deleteDebugSql.sh

            • sh /home/admin/test/test.sh
              [root@root test]#
              查看console.txt有没有每分钟写入console.txt文件

    [root@root test]# vim console.txt
    Fri Mar 27 21:40:01 EDT 2015
    可以看到最近一次的写入时间。

    
    
    # 五、crontab时间设定理解
    
    ## 操作符号
        在一个区域里填写多个数值的方法:
        逗号(',')分开的值,例如:“1,3,4,7,8”
        连词符('-')指定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”
        星号('*')代表任何可能的值。例如,在“小时域”里的星号等于是“每一个小时”,等等
        某些cron程序的扩展版本也支持斜线('/')操作符,用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数;
    
    ## crontab格式说明
    ![](http://images2017.cnblogs.com/blog/1225554/201710/1225554-20171009113944590-2129369827.png)
    
        1.命令格式:
            crontab [-u user] file
            crontab [-u user] [ -e | -l | -r ]
        2.命令功能:
            通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
        3.命令参数:
            -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
            file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
            -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
            -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
            -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
            -i:在删除用户的crontab文件时给确认提示。
    
    
    # 五、crontab使用实例
    
    实例1:每1分钟执行一次command
    命令:
    * * * * * command
     
    实例2:每小时的第3和第15分钟执行
    命令:
    3,15 * * * * command
     
    实例3:在上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 * * * command
     
    实例4:每隔两天的上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 */2 * * command
     
    实例5:每个星期一的上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 * * 1 command
     
    实例6:每晚的21:30重启smb 
    命令:
    30 21 * * * /etc/init.d/smb restart
     
    实例7:每月1、10、22日的4 : 45重启smb 
    命令:
    45 4 1,10,22 * * /etc/init.d/smb restart
     
    实例8:每周六、周日的1 : 10重启smb
    命令:
    10 1 * * 6,0 /etc/init.d/smb restart
     
    实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 
    命令:
    0,30 18-23 * * * /etc/init.d/smb restart
     
    实例10:每星期六的晚上11 : 00 pm重启smb 
    命令:
    0 23 * * 6 /etc/init.d/smb restart
     
    实例11:每一小时重启smb 
    命令:
    * */1 * * * /etc/init.d/smb restart
     
    实例12:晚上11点到早上7点之间,每隔一小时重启smb 
    命令:
    * 23-7/1 * * * /etc/init.d/smb restart
     
    实例13:每月的4号与每周一到周三的11点重启smb 
    命令:
    0 11 4 * mon-wed /etc/init.d/smb restart
     
    实例14:一月一号的4点重启smb 
    命令:
    0 4 1 jan * /etc/init.d/smb restart
    实例15:每小时执行/etc/cron.hourly目录内的脚本
    命令:
    01   *   *   *   *     root run-parts /etc/cron.hourly
    说明:
    run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了
    
    
    
    拓展阅读:
    1、[每天一个linux命令(50):crontab命令](http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html)
    2、[Linux 下执行定时任务 crontab 命令详解](https://segmentfault.com/a/1190000002628040)
    3、[cron维基百科](https://zh.wikipedia.org/wiki/Cron)
    4、https://www.linuxidc.com/Linux/2015-10/124110.htm
  • 相关阅读:
    Go语言中new()和 make()的区别详解
    对于Linux内核tty设备的一点理解
    中国移动MySQL数据库优化最佳实践
    深入分析Linux自旋锁
    JAVA大数据项目+整理的Mysql数据库32条军规
    MySQL DBA面试全揭秘
    LINUX 内核基础
    子查询
    linuxprobe----LINUX 基础课程目录学习
    从事分布式系统,计算,hadoop
  • 原文地址:https://www.cnblogs.com/everfight/p/crontab.html
Copyright © 2020-2023  润新知