• 【Ecstore2.0】计划任务/队列/导入导出 的执行问题


    【环境】CENTOS6.3 + wdcp(php5.3)

    【症状】可正常加入队列,但不执行队列

    【原因】大部份都是用户权限造成

    【原理】

      Ecstore2.0的导入导出、发送邮件、日常清理备份等任务操作,都通过用入任务队列,然后采用LINUX的CRON任务调试定时来执行并清空队列。

    【方法】

      第一步:测试linux环境的cron是否能被正常执行,从root用户开始

    #root身份登陆
    crontab -uroot -e
    
    #输入:每隔一分钟向test文件写入当前时间,保存退出
    */1 * * * * date>>~/test
    
    #重启cron服务
    service crond restart
    
    #监视cron日志
    tail -f /var/log/cron
    
    #监视test变化
    tail -f ~/test

    如不能执行,确认cron服务是否安装和启动,具体方法就不多说了,自行GOOGLE吧。

      第二步:确认 www 用户可正常执行计划任务

    #root身份登陆
    crontab -uwww -e
    
    #输入:每隔一分钟向test文件写入当前时间,保存退出
    */1 * * * * . /etc/profile;/bin/sh date>>~/test
    
    #重启cron服务
    service crond restart
    
    #监视cron日志
    tail -f /var/log/cron
    
    #监视test变化
    tail -f ~/test

     www用户的文件中,命令前加了“. /etc/profile;/bin/sh”,这是因为www没有载入环境变量。

      第三步:修改www的用户配置,wdcp/wdlinux中 www用户的主目录默认为/dev/null,我这里改为/home/www,并赋于www用户读写权限。

    #更改用户主目录(执行前先确认www用户的UID,cat /etc/passwd
    #需要先停止WEB服务,否则会提示www用户已登陆(usermod: user www is currently logged in)

    usermod
    -d /home/www -u 1000 www #启动web服务器,重新偿试第二步

       第四步:修改www用户的任务配置文件(配置文件以用户名命名存放在 /var/spool/cron)

    crontab -uwww -e
    
    */1 * * * * . /etc/profile;/bin/sh /www/web/aaa_com/public_html/script/queue/queue.sh>/dev/null
    */1 * * * * /www/web/aaa_com/public_html/script/crontab/crontab.php /www/wdlinux/wdphp/bin/php>/dev/null

    #重启cron服务,service crond restart

       注:当你用 tail -f /var/log/cron 发现任务在重复执行时,使用  ps aux |grep cron* 查看是有多个cron进程,如果有kill掉就可以了

       基本完工,就这么多了。在此之前,最好先以root手工执行 /www/web/aaa_com/public_html/script/queue/queue.sh,查看是否成功。

       如果导出任务执行正常,但是下载的文件为0字节,或发现并未在FTP目录中创建导出文件,可以移步【这里

  • 相关阅读:
    Swift Optional
    cocoapods 配置
    winform窗体全屏
    SQLiteDatabase的使用
    探索Gallery和ImageSwitcher布局
    常用布局参考
    增加动画的效果
    AlertDialog的写法
    自定义Toast
    适配器的经典写法
  • 原文地址:https://www.cnblogs.com/vmax/p/3699462.html
Copyright © 2020-2023  润新知