如何为edX通知摘要运行cron作业

如何为edX通知摘要运行cron作业,cron,edx,Cron,Edx,我正在尝试编写一个bash脚本,该脚本将由日常cron作业作为特定用户(“通知者”)运行 crontab和bash脚本中的 crontab -u notifier -e 53 09 * * * /edx/app/notifier/not.sh 我将脚本的内容放在我的用户(“通知者”)的主目录中,如下所示: #!/bin/bash SHELL=/bin/bash PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

我正在尝试编写一个bash脚本,该脚本将由日常cron作业作为特定用户(“通知者”)运行

  • crontab和bash脚本中的

    crontab -u notifier -e
    
    53 09 * * * /edx/app/notifier/not.sh
    
    我将脚本的内容放在我的用户(“通知者”)的主目录中,如下所示:

    #!/bin/bash
    SHELL=/bin/bash
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    
    cd "$(dirname "$0")"
    DATE=`date +%Y-%m-%d -d "tomorrow"`
    
    /edx/app/notifier/virtualenvs/notifier/bin/python /edx/app/notifier/src/manage.py forums_digest --to_datetime=$DATE
    
    然而,这并不像预期的那样有效

  • 下面是我手动成功运行的各个步骤

    sudo -H -u notifier bash
    cd
    DATE=`date +%Y-%m-%d -d "tomorrow"`
    /edx/app/notifier/virtualenvs/notifier/bin/python /edx/app/notifier/src/manage.py forums_digest --to_datetime=$DATE
    

  • 如何将通知摘要作为cron作业运行

    这个答案基本上是由用户tripleee给出的(见上面评论中的回复)。事实上,正如他所建议的,我必须在运行脚本之前激活venv。我只是根据他的想法提供完成的步骤,帮助我解决这个问题。 1.这是我在crontab中输入的内容,如果用户“通知者”

    55 13 * * * /edx/app/notifier/not.sh >/dev/null 2>&1
    
    二,。下面是我在/edx/app/notifier中创建的脚本文件not.sh的内容

    #!/bin/bash
    source /edx/app/notifier/notifier_env
    cd /edx/app/notifier/src
    export LANG=en_US.UTF-8
    DATE=`date +%Y-%m-%d -d "tomorrow"`
    /edx/app/notifier/virtualenvs/notifier/bin/python manage.py forums_digest --to_datetime=$DATE
    

    您是否收到任何错误消息?
    /edx/app
    真的是该用户的主目录吗?您是否试图在不运行其
    activate
    脚本的情况下使用VirtualNV(或者您使用的是不需要的非标准venv)?相反,在您停用
    后,手动步骤是否有效?这看起来更像是一个Python问题,而不是Bash问题或Cron问题。这似乎是一个目录问题。在过去的几天里,我做了很多实验。我可以手动运行以下步骤(注意我没有明确激活venv)sudo-H-u notifier bash cd/edx/app/notifier/virtualenvs/notifier/bin/python/edx/app/notifier/src/manage.py forums_digest--to_datetime=2018-07-08正如您所见,在注释中发布代码是没有用的。请回答您的问题,以提供任何其他详细信息或诊断。如果我显式设置home/cd“$(dirname”/edx/app/notifier”)”,则所有操作都正常运行,只有收到错误sqlite3.OperationalError:无法打开数据库文件nofitier.db,它找不到db文件,该文件位于/edx/app/notifier/dbI文件夹中。我相信您现在应该能够接受此答案,从而将此问题标记为已解决。另见。