Эквивалент Busybox для bashrc

Основное решение:

  • использовать $()для выполнения команды dateи возврата вывода
  • форматировать дату и время в UTC, экранировать символ %с помощью\
  • добавить 2>&1в конце для потоковой передачи stdoutи stderrв этот файл журнала

Пример:

* * * * * echo "Test crontab log" > /tmp/crontab.log.$(date --utc +\%Y\%m\%d_\%H\%M\%SZ) 2>&1

Выход:

ls -lh /tmp | grep log

-rw-rw-r-- 1 ubuntu  ubuntu    17 May  4 05:06 crontab.log.20190504_050601Z
-rw-rw-r-- 1 ubuntu  ubuntu    17 May  4 05:07 crontab.log.20190504_050701Z
1
20.03.2021, 06:36
1 ответ

Похоже, здесь на этот вопрос достаточно хорошо ответили:https://stackoverflow.com/a/38025686/15375140

По сути, /bin/shне является оболочкой входа в систему, поэтому по умолчанию он не будет исходным кодом .profile. Вы можете изменить Dockerfile, чтобы он был источником вашего .profileвручную, или вместо этого выполнить /bin/sh -l.

К сожалению, обе эти опции требуют изменения исходного изображения, что во многих случаях нежелательно. Похоже, что вы можете сказать ему, чтобы он создал профиль, поместив свой сценарий профиля в переменную среды ENV, например ENV=~/.shrc--, и это означает, что все, что вам нужно сделать, это изменить командную строку docker (или docker -compose, или все, что еще запускает ваш контейнер ). Например, для docker runвы должны добавить параметр-e ENV='~/.shrc'

2
28.04.2021, 22:58

Теги

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