zoukankan      html  css  js  c++  java
  • crontab命令加载和使用

    crontab命令用于设置周期性被执行的指令。

    在Linux系统中,Linux任务调度的工作主要分为以下两类:
    1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
    2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

    首先查看有无安装crontab

    [root@localhost gjw]# rpm -qa | grep cron
    cronie-1.4.11-23.el7.x86_64
    

      如果没有安装,找相关rpm包下载,然后安装rpm包:

    [root@localhost gjw]# rpm -ivh cronie-1.4.11-23.el7.x86_64.rpm --nodeps
    warning: cronie-1.4.11-23.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:cronie-1.4.11-23.el7             ################################# [100%]
    

     

    然后可以进行crontab -e进行编辑,虽然crontab可用了,但是是否加入到开机运行还得查看是否已启动crond,可以用 ps -ef|grep crond

    如果没有启动,可以用如下命令启动:

    #服务状态控制

    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置
    /sbin/service crond status //查看状态

    或者使用

    service crond start
    service crond stop
    service crond restart
    service crond reload
    service crond status

    下边是查询状态,此时服务没开

    [root@localhost eq]# service crond status
    Redirecting to /bin/systemctl status crond.service
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since Wed 2020-11-04 14:32:57 CST; 5min ago
      Process: 6328 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)
     Main PID: 6328 (code=exited, status=0/SUCCESS)
    
    Nov 04 14:30:45 localhost systemd[1]: Started Command Scheduler.
    Nov 04 14:30:45 localhost systemd[1]: Starting Command Scheduler...
    Nov 04 14:30:45 localhost crond[6328]: (CRON) INFO (Syslog will be used instead of sendmail.)
    Nov 04 14:30:45 localhost crond[6328]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 68% if used.)
    Nov 04 14:30:45 localhost crond[6328]: (CRON) INFO (running with inotify support)
    Nov 04 14:32:57 localhost systemd[1]: Stopping Command Scheduler...
    Nov 04 14:32:57 localhost systemd[1]: Stopped Command Scheduler.
    

    crontab命令的格式

    我们如果要创建自己的一个任务调度,可以使用  crontab -e 这个命令,如:

    [root@xiaoluo ~]# crontab -e

    此时会进入到vi编辑界面,来编写我们要调度的任务,crontab调度命令的格式如下:

    * * * * * command path  // 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

    调度命令的规则:

    字段名称 说明 取值范围
    分钟 每小时的第几分钟执行 0-59
    小时   每日的第几个小时执行 0-23
    日期 每月的第几天执行 1-31
    月历 每年的第几月执行 1-12
    星期 每周的第几天执行 0-6
    命令名称 欲执行的命令及参数  

    crontab命令中的一些常用特殊符号:

    符号  说明
    * 表示任何时刻
    , 表示分割
    表示一个段,如第二段里: 1-5,就表示1到5点
    /n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

    如果执行crontab -e 报错

    [root@localhost eq]# crontab -e
    no crontab for root - using an empty one
    /bin/sh: /usr/bin/vi: No such file or directory
    crontab: "/usr/bin/vi" exited with status 127
    

      如果有vim可执行

    [root@localhost packages]# cd /usr/bin/
    [root@localhost bin]# ln -s vim vi
    [root@localhost bin]# crontab -e
    no crontab for root - using an empty one
    crontab: installing new crontab
    

      ①实例一:如果我希望每隔一分钟,就将系统的时间写入到/home目录下的date1.txt文件里面,则输入下面的命令

    [root@xiaoluo ~]# crontab -e
    
    在crontab命令编辑界面输入crontab命令:  * * * * * date >> /home/date1.txt  
    (前面五个* * * * *表示时间是每隔一分钟  date命令就是得到当前的系统时间, >> 命令表示将结果累加到文件后面 > 命令则表示将结果覆盖文件 )
    保存以后如果出现  crontab: installing new 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 
    命令:
    0 23-7 * * * /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这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了
    

      

  • 相关阅读:
    微信机器人开发SDK使用教程--清粉任务
    微信机器人开发SDK使用教程--养号任务停止
    linux和 unix 介绍
    thinkphp5.1学习笔记
    nginx的相关配置记录和总结
    php优秀框架codeigniter学习系列——CI_URI类学习
    求职过程中的灵感
    设计模式学习系列——过滤器模式
    php优秀框架codeigniter学习系列——CI_Utf8类
    php优秀框架codeigniter学习系列——hooks
  • 原文地址:https://www.cnblogs.com/jiawenhuangzi/p/13926580.html
Copyright © 2011-2022 走看看