我正在尝试编写一个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作业运行?
答案 0 :(得分:0)
这个答案主要是由用户 tripleee (请参阅上面的评论中的用户答复)。确实,正如他建议的那样,我必须在运行脚本之前激活venv。我只是根据他的想法提供了完整的步骤,帮助我解决了这个问题。 1.如果用户为“通知者”,这就是我在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