如何 运行 edX 通知程序摘要的 cron 作业

How to run a cron job for edX notifier digest

我正在尝试编写一个 bash 脚本,该脚本将作为特定用户 ('notifier') 通过每日 cron 作业 运行。

  1. crontab 和 bash 脚本中的条目

    crontab -u notifier -e
    
    53 09 * * * /edx/app/notifier/not.sh
    

    我放置在我的用户('notifier)主目录中的脚本内容如下:

    #!/bin/bash
    SHELL=/bin/bash
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    
    cd "$(dirname "[=12=]")"
    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
    

    然而,这并没有像预期的那样工作。

  2. 以下是我手动运行成功的各个步骤

    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. 如果用户 'notifier'

,这就是我在 crontab 中输入的内容
55 13 * * * /edx/app/notifier/not.sh >/dev/null 2>&1

2。以下是我在 /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