1 Star 0 Fork 29

柚子 / notebook

forked from JustryDeng / notebook 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
[33]crontab定时任务.md 3.92 KB
一键复制 编辑 原始数据 按行查看 历史
JustryDeng 提交于 2023-06-09 21:42 . crontab定时任务

crontab定时任务

安装crontab

CentOS安装crontab

一般CentOS会默认安装了 crontab

  • 查看是否安装

    rpm -qa | grep crontab
    # 如果查询结果类似于下面,说明已安装
    # crontabs-1.11-6.20121102git.el7.noarch
  • 安装crontab

    yum install -y crontabs
  • systemctl status crond

    # 查看cron状态
    systemctl status crond
  • 查看cron日志

    # 查看当前周的日志
    cat /var/log/cron
    # 查看过去某周的日志
    cat /var/log/cron-{周日的yyyyMMdd}

Ubuntu安装crontab

  • 查看是否安装

    sudo service cron status

    注:若状态有点异常,可以重启试试sudo service cron restart

  • 安装crontab

    sudo apt-get install cron
  • 打开cron日志

    编辑50-default.conf文件,将被注释了的cron日志配置解开

    vim /etc/rsyslog.d/50-default.conf

    将被注释了的cron日志配置解开

    # cron.*       /var/log/cron.log #解开前
    cron.*       /var/log/cron.log #解开后

    重启rsyslog、重启cron

    sudo service rsyslog restart
    sudo service cron restart
  • 查看cron日志

    cat /var/log/cron.log

使用crontab

编辑定时任务

编辑定时任务,设置定时执行上述shell脚本

crontab -e

时间表达式:minute hour day month week command

  • minute:表示分钟,可以是从0到59之间的任何整数
  • hour:表示小时,可以是从0到23之间的任何整数
  • day:表示日期,可以是从1到31之间的任何整数
  • month:表示月份,可以是从1到12之间的任何整数
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

时间表达式中的特殊符号含义

  • *:代表所有的取值范围内的数字
  • /:代表"每"("*/5",表示每5个单位)
  • -:代表从某个数字到某分开几个离散的数字;个数字("1-4",表示1-4个单位)
  • ,:代表几个离散的数字

查看定时任务

查看定时任务

crontab -l

示例

[root@psys-prd-210 backend]# crontab -l
0 1,5,9,13,17,21,23 * * *  /www/wwwroot/backend/restart-acs-camera.sh
0 1 * * *  /www/wwwroot/backend/del-es-index.sh

测试一下

  • 第一步:编写一个临时的测试脚本

    # 确保目录存在
    mkdir -p /usr/local/backup/
    
    # 创建临时测试脚本
    cat > /usr/local/backup/tmp.sh << \EOF
    #!/bin/bash
    echo "$(date +%Y%m%d%H%M)"  >> /usr/local/backup/tmp.log
    EOF
    
    # 查看一下测试脚本
    cat /usr/local/backup/tmp.sh
    
    # 授权可执行(最好进行一下此步骤,否则可能导致定时任务不执行)
    chmod +x /usr/local/backup/tmp.sh
  • 第二步:编辑定时任务

    crontab -e

    将脚本加定时任务

    # 每分钟执行指定脚本
    */1 * * * * /usr/local/backup/tmp.sh
  • 第三步:查看定时任务

    crontab -l

    image-20230609163729035

  • 第四步:观察第一步中,指定的输出文件

    # 确保文件存在
    >> /usr/local/backup/tmp.log
    tail -f /usr/local/backup/tmp.log

    观察几分钟,发现有输出,即:定时任务生效了

    image-20230609164049994

相关资料

1
https://gitee.com/WY784755850/notebook.git
git@gitee.com:WY784755850/notebook.git
WY784755850
notebook
notebook
master

搜索帮助