Я попытался обновить свою кодовую базу ежедневно с помощью следующей команды crontab. Но сам первый шаг не работа, когда я протестировал его.
27 15 * * * . cd /home/covuser/user/ && . /home/covuser/user/conf.sh
40 17 * * * . cd /home/covuser/user && . /home/covuser/user/checkout.sh
conf.sh содержит переменную среды, необходимую для создания контроля кода. файл checkout.sh делает процесс контроля.
Первая строка, как предполагается, устанавливает требуемую переменную среды. Но этого не происходит.
Какую ошибку сделали в этом?Заранее спасибо.
Каждая строка в вашем crontab представляет отдельное задание, которое будет запланировано и выполнено независимо.
Это в вашем случае особенно означает, что они выполняются в разных сеансах оболочки, так что выбор файла сценария для установки некоторых переменных среды в одном задании не повлияет на среду, в которой позднее будет выполняться другое задание.
Вам придется изменить свой процесс и запустить оба сценария в одном сеансе оболочки и, следовательно, проще всего просто в одной и той же задаче cron.
Если вам нужна задержка между циклами, вы можете добиться этого, например, с sleep
вместо планирования другой работы с фиксированным более поздним временем.
Да, и, конечно, как указано в некоторых других комментариях и ответах, вы можете использовать только исходные сценарии с помощью .
, чтобы они запускались в текущей среде оболочки вместо подоболочки. Однако cd
- это не сценарий, а встроенная команда оболочки, которая всегда выполняется в текущей среде оболочки, поэтому написание . cd somehwere
также является ошибкой.
Я полагаю, что проблема с .
предыдущий Ваш cd
.
.
(псевдоним fro source
) позволяет Вам получить файл. Это не работает на оболочку builtins, как cd
, поскольку они не исполняемые файлы, которые могут быть получены.
Поскольку Вы связываете две команды с И - &&
, оболочка пропускает любую команду после той, которая перестала работать, поскольку они не изменят получающееся значение результата (false && true == false
). Вы могли заменить &&
с a ;
если Вы желаете другого поведения.
Это должно работать:
27 15 * * * cd /home/covuser/user/ && . /home/covuser/user/conf.sh
40 17 * * * cd /home/covuser/user && . /home/covuser/user/checkout.sh
Обновление: Если сценарии зависят, (который они, я думаю?), выполняет все на одной единственной сессии. (Новая сессия удара будет открыта для выполнения каждой записи крона),
27 15 * * * cd /home/covuser/user/ && . /home/covuser/user/conf.sh && . /home/covuser/user/checkout.sh