cron не выполняет команды bash

Я использую всякий раз, когда gem для генерировать команды cron. Я могу проверить эти команды с помощью crontab -l . Сгенерированные команды:

24 15 * * * /bin/bash -l -c 'cd /Users/Chris/Sites/covid_tracker && RAILS_ENV=development bundle exec rake countries:temp --silent >> log/cron.log 2>&1'

24 15 * * * /bin/bash -l -c 'echo '\''should see this in the log'\'' >> log/cron.log 2>&1'

Первая команда (bundle exec rake) выполняется, и я вижу результат в cron.log. Однако я не вижу вывода для второй команды (echo) в cron.log.

Я хочу, чтобы команда echo (и другие команды bash, которые я хочу использовать) выполнялась в том же каталоге, что и пакет exec команда rake ,и разрешения должны быть такими же, как если бы я выполнил команду из этого каталога. Как мне это сделать?

0
задан 14 May 2020 в 08:33
1 ответ

Вы можете добавить префикс к команде с тем же префиксом cd /Users/Chris/Sites/covid_tracker &&, что и перед первой командой. Это изменяет рабочий каталог на этот каталог перед запуском команды. Другой вариант — создать сценарий оболочки в этом каталоге и запустить его. Например:

24 15 * * * cd /Users/Chris/Sites/covid_tracker && ./runCron.sh >> log/cron.log 2>&1

runCron.sh:

#!/bin/bash -l

cd /Users/Chris/Sites/covid_tracker
RAILS_ENV=development bundle exec rake countries:temp --silent
echo "should see this in the log"

(Я не уверен, почему вы указали оболочку входа в систему с параметром -l, это необходимо для rake?)

1
ответ дан 14 May 2020 в 06:46

Теги

Похожие вопросы