ошибка, в то время как крон, планируя sh сценарий

Это - мой сценарий оболочки, который я хочу запланировать задание крона использования.

parser.sh

#!/bin/bash

source .profile
workon venv
cd /home/ashish/deployments/myproject

export DJANGO_SETTINGS_MODULE=myproject.settings_production
python /home/ashish/deployments/myproject/myproject/manage.py parse_data

Задание крона -

*/15 * * * * . /home/ashish/parser.sh

Каждый раз, когда этот крон прогоны задания я получаю почту с ошибками:

/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found
Traceback (most recent call last):
  File "/home/ashish/deployments/myproject/myproject/manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

Когда я запускаю этот скрипт от терминала -

. parser.sh    #this gives no error

sh parser.sh   #this gives errors
/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found

Какова может быть возможная ошибка в этом сценарии?

1
задан 3 May 2015 в 05:16

2 ответа

*/15 * * * * . /home/ashish/parser.sh

cron использование sh, не bash, поэтому при определении источника сценария (это - то, что эти . делает), это выполняется под sh, не bash. Удалите ..

кроме того, PATH для крона ограничен. Определите полные пути к командам, которые Вы используете, такой как workon, или устанавливаете PATH сами.

3
ответ дан 10 November 2019 в 09:18

Для выполнения сценария как, он работает собственной учетной записи (с ударом), изменяют crontab на следующее:

*/15 * * * * sudo -u ashish /home/ashish/parser.sh

Это выполнит сценарий почти, как будто Вы выполнили его из командной строки на Вашей собственной учетной записи.

0
ответ дан 10 November 2019 в 09:18

Другие вопросы по тегам:

Похожие вопросы: