Почему cron job не компилирует файл python? - PullRequest
1 голос
/ 30 апреля 2020

Cron не компилирует мой файл .py, и я не могу получить электронное письмо от Cron, чтобы понять, почему Cron не работает. Но если я просто запускаю команду ~/t/test.sh в терминале, все работает нормально.

Код в cron:

SHELL=/bin/bash
MAILTO=mymail@gmail.com
30 0-23 1-31 1-12 0-6 ~/t/test.sh

Я пытаюсь запустить скрипт test.sh, который имеет код:

#!/bin/bash
cd /home/alex/t && python3.8 ./test.py

Код в test.py:

from datetime import datetime
current_time = datetime.now()
f = open("text.txt", 'w+')
f.write("Hello world! Now is {0}\n".format(current_time))
f.close()

Я запустил Cron с помощью команд sudo crontab-e и crontab-e. Я ставлю Cron в первой строке MAILTO=mymail@gmail.com. Я установил yum install mailx. Я попытался добавить команду >/dev/null 2>&1 в Cron, т.е. написать * * * * * ~/t/test.sh >/dev/null 2>&1 Ничего не помогает. Я использую Ubuntu 18.04 Python3 .8.2. Вот что показывают журналы для команды grep CRON /var/log/syslog:

Apr 30 15:35:01 av CRON[2130]: (alex) CMD (~/t/test.sh)

Apr 30 15:35:01 av CRON[2129]: (alex) MAIL (mailer 68 bytes of output put get status 0x004b from MTA#012)

Кто-нибудь сталкивался с этой проблемой? Вы можете помочь?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

ваш тест. sh должен выглядеть примерно так: (нужен полный путь)

#!/bin/bash
/"location where python is installed"/python/bin/python /home/alex/t/test.py
0 голосов
/ 30 апреля 2020

Самым слабым звеном в вашем коде является тот факт, что вы вызываете интерпретатор Python 3.8 без полного пути. Вы вызываете bash, используя полный абсолютный путь, cd - абсолютный путь, и получаете доступ к своему скрипту через путь к каталогу, в который вы cd-редактировали. Только Python предполагает наличие некоторых каталогов в переменной среды PATH.

Попробуйте получить доступ к Python 3.8 по полному пути к его местоположению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...