Как создать cronjob для этих команд? - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу выполнить задание cron, чтобы каждый день запускать скрипт на python в виртуальной среде.Поэтому я попытался настроить задание cron, но, похоже, оно не выполняется.

Если бы я запускал программу из терминала нормально, я набрал бы:

  1. source ig/venv/bin/activat введите, чтобы активировать мою виртуальную среду

  2. cd ig/mybot/src/ перейдите в мой каталог

  3. python ultimate.py запустите мою программу

ТАК ЧТО это моя работа cron.Я установил его на 1, чтобы запускать каждую минуту, чтобы видеть, что он работает, но ничего не происходит.

1   *   *   *   *   source ig/venv/bin/activate && cd ig/mybot/src/ && python ultimate.py

Редактировать: я обновил свою программу, поэтому не требуются запросы командной строки,Мне просто нужно выполнить эти три простые команды.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я не уверен, что это хорошая идея, но вы могли бы сделать такой сценарий.

#!/usr/bin/env bash

PYTHON_PROJECT_DIR=/path/to/python/project/dir

pushd ${PYTHON_PROJECT_DIR}

VALUES="first line of stream\nsecondline of stream\n"

pipenv run /path/to/your/script.py < (echo -e $VALUES)

popd

pushd и popd - это команды для перемещения со стеком каталогов, поэтому вы окажетесь в каталоге в верхней части стека, поэтому добавив один каталог, вы переместите в рабочий каталог, и, нажав, вы вернетесь в исходное положение.

Использование pipenv позволяет запускать сценарии в виртуальной среде (это не так сложно настроить), таким образом вы будете использовать переменные среды в файлах .env для проекта, и выЯ буду использовать только зависимости этого проекта.(относится к python).

Если вы передадите такие значения, как скрипт python, когда он запрашивает значение из stdin, он будет использовать значения, которые вы выводили (строка за строкой, первая строка - первый вводи так далее)

Это может быть способ.

Лично, когда я это делаю cronjobs Мне нравится запускать непосредственно сценарии bash, потому что я мог бы добавить дополнительное ведение журнала, так что наличие сценария-обертки не кажется таким необоснованным.

Еще одна вещь, которую вы можете сделать, это получить путь к исполняемому файлу python (для виртуальной среды) и использовать его в качестве интерпретатора, заменив #!/usr/bin/env python на #!/path/to/pythons/virtual/env/interpreter, но вы не получите .env variables (может быть, есть способ их получить.

0 голосов
/ 21 февраля 2019

Вы можете обернуть это другим скриптом Python.Создайте новый скрипт на python и запустите его вместо cron.

Просмотрите модуль subprocess .

Пример: Ваша команда станет subprocess.call(['source','ig/venv/bin/activate']) внутри оболочки Pythonscript.

Кроме того, input("Enter the value") предложит вам ввести данные от пользователя.

С помощью двух приведенных выше, ваша проблема будет решена Python.

...