【发布时间】:2018-07-16 18:38:07
【问题描述】:
我正在尝试编写一个 bash 脚本,该脚本将由日常 cron 作业作为特定用户(“通知程序”)运行。
-
进入 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 "$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 作业运行?
【问题讨论】:
-
您是否收到任何错误消息?
/edx/app真的是这个用户的主目录吗?您是否尝试使用 virtualenv 而不运行其activate脚本(或者您是否使用不需要的非标准 venv)?相反,在deactivate(或其他)之后,您的手动步骤是否有效? -
这看起来更像是一个 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
-
如您所见,在 cmets 中发布代码是没有用的。请edit您的问题以提供任何其他详细信息或诊断信息。
-
如果我明确设置 home/cd "$(dirname "/edx/app/notifier")",那么一切都运行正常,除了我得到错误 sqlite3.OperationalError: 无法打开数据库文件 nofitier。 db 显然,它无法找到文件夹 /edx/app/notifier/db 中的 db 文件