首页 > 系统相关 >Linux定时任务概述

Linux定时任务概述

时间:2023-02-28 14:57:54浏览次数:59  
标签:00 23 crontab 概述 Linux 定时 root crond

Linux定时任务概述

基于centos7.6.1810

参考鸟哥私房菜

/etc/crontab

[root@VM-4-10-centos ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  • 可以看到/etc/crontab说明了一个定时任务的定义模板

  • 7个字段,前面5位是时间字段,第六位是用吗,第七位是待执行的命令

  • 时间说明

    第N位 单位 范围 说明
    第一位 分钟 0-59
    第二位 小时 0-23
    第三位 几号 1-31
    第四位 哪一月 1-12 可以是jan,feb,mar,apr等英文缩写
    第五位 周几 0-7 周日是0或7,也可以是sun,mon,tue等英文缩写
  • 每一位上均可以是特殊字符,比如

    特殊字符
    * 代表任何时刻都接受的意思
    , 代表分隔时段的意思
    - 代表一段时间范围内
    /n 每隔 n 单位间隔
  • 示例

      30  21  *  *  1,3,5,7    umount /media
      # 每周一、周三、周五、周日的晚上9点半执行umount /media
      *  8-23/2  *  1-5  *  /apps/bin/dbcheck.sh
      # 每年的1到5月早上8点到23点间每隔2个小时(8:00-10:00-12:00这样)执行数据库检查脚本
      0  0  *  *  2-6 /apps/bin/dbcheck.sh
      # 周二到周六早上0点执行数据库检查脚本
      45  4-8  1,10,22  *  *  exp scott/tiger dbfile=1.bak
      # 每个月的1号、10号、22号的早上4点到8点的45分(4:45-5:45) 执行后续命令
      10  1  *  *  6,0   /usr/local/alert/file_check.sh
      # 每个周末的凌晨1点10分执行文件检查脚本
      59  23  28  2-5,7,9  *   /usr/local/alert/file_check.sh
      # 每年的2、3、4、5、7、9月的28日晚上23点59分执行文件检查脚本
    
  • 注意这样写的含义

    * 1-23 * * *  # 每天的1:00 1:01 1:02 ... 都会去...
    0 1-23 * * *  # 每天的1:00 2:00 3:00 ... 都会去 ...
    

crontab命令

  • 知道了如何去定义一个定时任务

  • 你还需要知道如何去编辑查看删除定时任务等,你会用到crontab这个命令

  • crontab命令常见参数

    -e  #edit   编辑,进入vi模式了,写完保存退出即可
    -l  #list   列出所有定时任务
    -r  #remove  删除指定的定时任务
    
  • 一行一个定时任务

配置文件

  • /etc/cron.allow: 将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab

  • /etc/cron.deny: 将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使 用者,就可以使用 crontab

  • 以优先顺序来说, /etc/cron.allow 比 /etc/cron.deny 要优先, 而判断 上面,这两个文件只选择一个来限制而已,因此,建议你只要保留一个即可。系统默认是保留 /etc/cron.deny

  • 一个账号一行

  • cron定时任务的执行还依赖于crond进程,你可以用systemctl来管理它

    [root@VM-4-10-centos home]# ps -ef|grep crond
    root      9612     1  0 13:37 ?        00:00:00 /usr/sbin/crond -n
    
    [root@VM-4-10-centos home]# systemctl status crond
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2023-02-28 13:37:26 CST; 9min ago
     Main PID: 9612 (crond)
        Tasks: 1
       Memory: 620.0K
       CGroup: /system.slice/crond.service
               └─9612 /usr/sbin/crond -n
    
    

关于定时任务的其他

工具网站

https://tool.lu/crontab/

https://crontab.guru/

冲突

  • 仔细的同学会发现如果我设置的几月几日,且设置了周几,那到底以哪个为准呢?

    1 2 3 4 5 root echo haha # 每年的4月3日 一定是周五?
    
  • man 5 crontab往下翻一点,你能找到这段话

     Note: The day of a command's execution can be specified in the following two fields — 'day of month', and  'day  of  week'.   If  both  fields  are restricted (i.e., do not contain the "*" character), the command will be run when either field matches the current time.  For example,
           "30 4 1,15 * 5" would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.
    
    
  • 前面的5个时间字段,其实分为2个部分,前面4个是一部分,后面周几是另外一部分。

  • 这是or的关系,意味着满足一个就会去执行,所以

    1 2 3 4 5 root echo haha 
    # 这个命令的意思是每周五的凌晨2点1分,root用户“哈哈”,
    # 以及每年的4月3日凌晨2点1分root用户也会“哈哈”
    

标签:00,23,crontab,概述,Linux,定时,root,crond
From: https://www.cnblogs.com/wuxianfeng023/p/17164256.html

相关文章

  • CUDA 教程(二)CUDA 模型概述
    前言 本章分别从硬件层面和软件层面对CUDA编程模型进行描述。主要讨论GPU的并行计算是如何在硬件上实现的,CUDA中的模块理解以及CPU和GPU之间的交互,指令的同步。这......
  • Linux安装PHP8 新版笔记
    PHP部分 官网下载地址:https://www.php.net/downloads.php 我下载的是此时的最新稳定版8.2.3cd/usr/localwgethttps://www.php.net/distributions/php-8.2.3.tar.......
  • Redhat Enterprise Linux磁带机简单操作
    Linux下使用磁带机的方式有多种,主要有通过Amanda、Tar等软件进行操作。Amanda是提供了远程集中备份的功能,通过分别设置客户端、服务器端,实现远程集中存储备份。而Tar主要用......
  • Linux新手渣渣上路史
    Linux新手渣渣上路史时至2022年,IT行业的迅速发展大家也有目共睹,IT行业在社会的发展中起着举足轻重的作用。其中一角Linux系统,从诞生到开源,再到现在受大众的欢迎,是一个很好......
  • linux rz sz
    安装yum-yinstalllrzszhttps://www.ohse.de/uwe/software/lrzsz.html使用上传rz下载sz......
  • 10条命令1分钟,快速分析Linux性能问题!
    秘籍:10条命令1分钟,快速分析Linux性能问题!如果某个Linux有性能问题,你登录之后来排查,第一分钟内你会使用哪些命令做那些方面的排查?在Netflix,我们在云端有大量的EC2实......
  • [Shell] Windows上支持Linux Shell的工具/方法
    0概述1方式一:WindowsTerminal安装方式安装WindowsTerminal的最简单方法是通过MicrosoftStore:ms-windows-store://pdp/?ProductId=9n0dx20hk701如果此链接......
  • linux 网络命名空间
    #创建网络命名空间ipnetnsaddnetns1#查看新增的网络命名空间ipnetnslist#查看挂载点ls/var/run/netns/#进入网络命名空间查看ipnetnsexecnetns1ip......
  • 写一个linux 定时器与jar的启动脚本
    1.在etc/crontab写定时执行的脚本SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root#Fordetailsseeman4crontabs#Exampleofjobdefinition:......
  • 基于jeecgboot的flowable流程支持定时捕获事件
     Flowable事件  事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。在BPMN2.0中,有两种主要的事件分类:*捕获(catching)与抛出(throwing)*事件。捕获:......