美文网首页
Dnmp环境添加定时任务

Dnmp环境添加定时任务

作者: 佟言佟语 | 来源:发表于2022-05-20 08:42 被阅读0次

    利用Dock环境搭建lnmp,有些业务需用使用到cron定时任务,在添加定时任务的时候,定时任务不执行的坑点分析。

    一、代码

    # docker-compose.yml 挂载倆个文件用于添加crond定时任务。
    volumes:
        - ./conf/php/init/dingshi.sh:/tmp/dingshi.sh
        - ./conf/php/init/init.sh:/docker-entrypoint.d/init.sh
         
    # dingshi.sh  文件内容是需要定时执行的脚本
    #!/bin/bash
    /usr/local/bin/php  /var/www/html/public/index.php /addons/crontab/autotask/index > /dev/null  2>&1 &
    
    # init.sh  是运行容器后先要执行的脚本
    # 赋予用户执行文件的权限
    chmod +x /tmp/dingshi.sh
    echo "* * * * * /tmp/dingshi.sh" >> /var/spool/cron/crontabs/root
    # 重启定时任务服务
    /etc/init.d/cron restart
    
    

    二、执行流程

    重新容器的定时任务后,发现定时任务并没有执行。

    /var/log中没有看到有关定时任务执行的日志文件。

    在查询资料的过程中,发现可安装一个系统日志的组件rsyslog用于查看定时任务的执行日志。

    apt-get install rsyslog
    service rsyslog start
    # 查看日志
    cat /var/log/syslog
    

    在查询日志后,发现如下报错:

    May 19 10:42:03 7c0e07f30856 cron[2124]: (root) INSECURE MODE (mode 0600 expected) (crontabs/root)
    

    root文件权限必须为600。

    三、解决方式

    #!/bin/bash
    
    chmod +x /tmp/dingshi.sh
    echo "* * * * * /tmp/dingshi.sh" >> /var/spool/cron/crontabs/root
    # 新增修改文件权限600
    chmod 600 /var/spool/cron/crontabs/root
    /etc/init.d/cron restart
    
    

    四、衍生学习

    权限字母对应权限值

    • r读取权限=4
    • w写入权限=2
    • x执行权限=1

    rwx(读、写、可执行)===4+2+1=7

    rw=(读、写)===4+2=6

    位置值意义

    7 (所有者)7(用户组) 7(公共)

    因此,上述所有的解决方式。root文件必须是所有者有读和写的权限,才能保证定时任务的正确执行。

    相关文章

      网友评论

          本文标题:Dnmp环境添加定时任务

          本文链接:https://www.haomeiwen.com/subject/dvtfprtx.html