Я пытаюсь заставить крон звонить в корректные ПУТИ. Когда я запускаю скрипт Python от оболочки, сценарий хорошо работает, поскольку это использует набор ПУТЕЙ в bashrc, но когда я использую крон, все ПУТИ не используются от bashrc. Существует ли файл, к которому я могу ввести ПУТИ для крона как bashrc или способ назвать ПУТИ от bashrc?
Извините я не думаю, что сформулировал это правильно, я могу заставить корректный сценарий работать (значение, что ПУТЬ к сценарию в crontab не является проблемой здесь), это - как раз в то самое время, когда тот сценарий работает, я выполняю сборку, и это использует ПУТИ, начинаются .bashrc
. Когда я запускаю скрипт, когда я зарегистрирован, .bashrc
ПУТИ втянуты. Так как крон не работает в оболочке на, говорят, что он не сдерживается .bashrc
. Существует ли способ втянуть это, не имея необходимость писать обертку сценария удара?
Я использовал / etc / crontab
. Я использовал vi
, ввел в этот файл нужные ПУТЬ и запустил его от имени пользователя root. Обычный crontab перезаписывает заданные вами пути. Хорошее руководство о том, как это сделать .
Общесистемный файл cron выглядит так:
This has the username field, as used by /etc/crontab.
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
42 6 * * * root run-parts --report /etc/cron.daily
47 6 * * 7 root run-parts --report /etc/cron.weekly
52 6 1 * * root run-parts --report /etc/cron.monthly
01 01 * * 1-5 root python /path/to/file.py
Среда по умолчанию для заданий cron очень разреженная и может сильно отличаться от среды, в которой вы разрабатываете сценарии python. Для сценария, который может запускаться в cron, любая среда, от которой вы зависите, должна быть установлена явно. В самом файле cron укажите полные пути к исполняемым файлам python и к вашим сценариям python.
Вы должны поместить полные пути в crontab
. Это самый безопасный вариант.
Если вы не хотите этого делать, вы можете поместить вокруг своих программ сценарий-оболочку и указать там ПУТЬ.
например.
01 01 * * * command
становится:
01 01 * * * /full/path/to/command
Также все, что вызывается из cron
, должно быть очень осторожно с программами, которые оно запускает, и, вероятно, установить свой собственный выбор для переменной PATH
.
РЕДАКТИРОВАТЬ:
Если вы не знаете, где находится команда, вы хотите выполнить which
из вашей оболочки, и она сообщит вам путь.
РЕДАКТИРОВАТЬ2:
Итак, как только ваша программа будет запущена, первое, что она должна сделать, это установить PATH
и любую другую необходимую переменную (например, LD_LIBRARY_PATH
) на значения, которые являются требуется для запуска сценария.
По сути, вместо того, чтобы думать о том, как изменить среду cron, чтобы сделать ее более подходящей для вашей программы / сценария, заставьте ваш сценарий обрабатывать заданную среду, задав соответствующую при запуске.