如何为edX通知摘要运行cron作业
我正在尝试编写一个bash脚本,该脚本将由日常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
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文件夹中。我相信您现在应该能够接受此答案,从而将此问题标记为已解决。另见。