Linux定时任务概述

linux,定时,任务,概述 · 浏览次数 : 19

小编点评

**Linux定时任务概述** **使用 crontab 命令定义定时任务** 1. 打开 crontab 文件:`crontab -e` 2. 添加新的定时任务一行: ``` 0 1 * * * /usr/local/alert/file_check.sh ``` 其中: * `0` 表示每分钟运行一次任务。 * `1` 表示每天早上 1:00 am 运行任务。 * `*` 表示任何月份。 * `*` 表示任何周几。 * `*` 表示任何日期。 * `/usr/local/alert/file_check.sh` 是要执行的任务的路径。 **示例** 假设您想每小时执行以下任务: ``` */15 * * * * /bin/mail -s "Cron job alert" user@example.com < /etc/crontab.tmp ``` 将创建一个名为 `crontab.tmp` 的临时文件,并将其内容添加到 crontab 中。然后,您可以删除该临时文件。 **crontab 参数** | 参数 | 描述 | 示例 | |---|---|---| | minute | 每分钟执行的任务 | 0 1 * * * | | hour | 每小时执行的任务 | 0 15 * * * | | day of month | 每月执行的任务 | 0 15 30 * * | | day of week | 每周执行的任务 | 0 15 30 * * | | month | 每月的日期 | 0 15 30 01 * | | day | 每日的日期 | 0 15 30 01 * | | command | 要执行的任务的路径 | /usr/local/alert/file_check.sh | **注意事项** * 确保您有权限来修改 crontab 文件。 * 定期备份 crontab 文件,以确保在意外情况下可以恢复。 * 使用 `crontab -l` 命令查看您的定时任务列表。

正文

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用户也会“哈哈”
    

与Linux定时任务概述相似的内容:

Linux定时任务概述

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=

[转帖]iptables命令详解和举例(完整版)

1、防火墙概述 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 目前市面上比较

Linux systemd 定时任务

哈喽大家好,我是咸鱼。 说到 Linux 定时任务,大家用得最多的就是 crond 服务,但其实 systemd 也有类似的功能。我们不但可以通过 systemd 来管理服务,还能设置定时任务,那就是 systemd timer。 与 crond 相比,systemd 定时任务具有以下优点: 更高的

[转帖]Linux | crontab定时任务及开机自启项

本文总结如何使用 crontab 创建定时任务及开启自启项 1。 本文基于 CentOS 7.9 系统所写。 Updated: 2022 / 9 / 5 Linux | crontab定时任务及开机自启 安装查询开机自启项开机自启动 设置开机自启项crond语法区别/etc/crontabcront

bat cmd 无效参数/选项 - deleting

[Window bat expdp 数据库定时任务逻辑备份数据库 定时删除N天前的旧文件](https://www.cnblogs.com/vipsoft/p/6074077.html) [Linux shell crontab expdp 定时任务逻辑备份数据库 定时删除旧文件](https://

[转帖]Linux 监测服务心跳、服务重启策略

文章目录 前言背景一、curl服务可用验证二、服务探测脚本三、配置系统定时任务四、Linux特殊字符转义总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容,下面案例可供参考 背景 当服务假死情况下,导致服务不可用,一时间定位不到服务假死原因,可以采用

[转帖]《Linux性能优化实战》笔记(四)—— CPU 使用率

一、 节拍率与CPU时间 前一篇说到,Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jif

[转帖]理解开源安全中的林纳斯定律

https://linux.cn/article-15344-1.html 林纳斯定律Linus's Law即“只要有足够多的眼睛关注,任何漏洞都无处隐藏given enough eyeballs, all bugs are shallow”。那么林纳斯定律是如何应用于开源软件安全的呢? 这篇文章讨

前端认识docker

Docker 是什么 先看看百科的定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 容器引擎?镜像?容器?虚拟化

[转帖]Linux内存占用常用的几个分析方法,你确定都知道?

https://cloud.tencent.com/developer/article/2168100?areaSource=105001.14&traceId=iLuwwg5L5-kYlGSYRZNBH 0. 引言: 系统内存是硬件系统中必不可少的部分,定时查看系统内存资源运行情况,可以帮助我们及