Рейтинг:1

Мои задания cron не запускаются при попытке сохранить вывод скрипта в текстовый файл

флаг ng

Я пытаюсь запустить скрипт python два раза в день: один раз в 8:00 и снова в 20:00. Я надеялся сохранить выходные данные сценария в текстовом файле на моем компьютере с именем LOG_{дата-время}.txt, чтобы я мог просматривать файлы журнала на случай, если что-то пойдет не так со сценарием. Я установил следующее задание cron:

0 8,20 * * * python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(date +"%d-%m-%Y")".txt

После настройки задания cron я проверил сценарий после 20:00 и заметил, что мой сценарий еще не запущен (я настроил его на обновление файла электронной таблицы и оставляю отметку времени после каждого обновления).

Я провел небольшое устранение неполадок самостоятельно и обнаружил, что если запустить задание cron без части вывода, оно будет работать (я также обнаружил, что журналы заданий cron выводятся в формате UTC, а не в моем системном времени, но это это тема для другого раза):

0 8,20 * * * python3 /script/working/directory/Script.py

Есть ли что-то, что мне здесь не хватает? Разве это не должно сохранять вывод сценариев в файл? Я немного новичок в этом и пытаюсь учиться, когда иду с этим, но я просто не уверен, куда идти с этим.Было бы неплохо иметь возможность сохранять вывод моего скрипта для целей отладки.

Wayne Vosberg avatar
флаг bd
попробуй убрать лишние кавычки. то есть `/LOG_$(date+'%d-%m-%Y').txt`. Кроме того, вы имеете в виду `>>` вместо `>`?
Wayne Vosberg avatar
флаг bd
Еще одна мысль - убедитесь, что пользователь, выполняющий задание cron, имеет доступ к `/script/working/directory/logs`
флаг hr
Символы `%` являются специальными в crontabs и должны быть экранированы. См., например, [Невозможно выполнить команду в cron] (https://askubuntu.com/questions/829818/unable-to-execute-command-in-cron)
Pocketmouse avatar
флаг ng
Я немного неправильно отформатировал его, он должен быть `/"LOG_$(date +'%d-%m-%Y').txt"`
Рейтинг:1
флаг cn

Основная причина, по которой я могу предположить, заключается в том, что либо путь к журналу не существует, либо у вас нет разрешения на запись в путь к журналу.

Попробуйте выполнить команду вручную вместо cron

python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(дата +"%d-%m-%Y")".txt

Скорее всего, вы увидите ошибку в своем терминале.

Pocketmouse avatar
флаг ng
Это не тот случай.
Pocketmouse avatar
флаг ng
Я вошел для редактирования и только что понял, что не сохранил, теперь я не могу редактировать: Это не тот случай. Когда я вручную запускаю скрипт как в командной строке, так и через файл .sh, он работает без проблем.Я также настроил как `Script.py`, так и `Script.sh`, чтобы они имели права на выполнение с помощью `chmod +x script.py`. Я изучал это дальше и обнаружил, что если я использую такие вещи, как запросы `get`, у меня должна быть виртуальная среда, которую нужно вызывать в cron для запуска этого скрипта. Я не уверен, что это значит или как реализовать это в настоящее время, но, как я уже сказал, я читаю об этом.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.