выполнить команду bash работает, но не в crontab - PullRequest
0 голосов
/ 23 июня 2018

Я использую продукт aws lightsail.

Когда я выполняю команду bash,

* * * * * docker exec -it my_container_name Rscript /home/path/to/file.R

Я также проверил cron log, используя

grep CRON /var/log/syslog

и он говорит, что работал нормально. Но результат не дан.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Имеет ли ваш файл dockerimage ENTRYPOINT

т.е.

copy run2.sh /usr/local/bin/run2.sh
run chmod +x /usr/local/bin/run2.sh
ENTRYPOINT ["/usr/local/bin/run2.sh"]

Ваш файл run2.sh должен выглядеть примерно так (чтобы он мог отвечать на сигналы отОС, т. е. завершение работы)

#!/bin/bash
#This is a run file - which should be used to add things you want your
#container to do when you start it up
#
#If you do not have this then ...
#  docker-compose up ---- simply exists as there is nothing for the container to do.

trap cleanup 1 2 3 6 9 15

cleanup()
{
  echo "Caught Signal ... cleaning up."
  service postgresql stop
  sleep 1s
  echo "Done  ... quitting."
  exit 1
}

service postgresql start
# wait forever
echo "Starting up"
while true
do
  tail -f /dev/null
done

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

Если вы хотите иметь несколько правил, япросто ленивый и слил их всех вместе.

Надеюсь, это поможет ....

0 голосов
/ 24 июня 2018

Зачем запускать -it ?

Не лучше ли поместить скрипт в контейнер и запустить -d ?

ли

В дополнение к этому, ваш bash-env может быть настроен иначе, если вы используете cron, а не интерактивный вход в систему. PATHS, настройка LC вызвала у меня большинство проблем.

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