/bin/bash -c не начинает отсчет с даты:

/bin/bash -c "while true; do echo [`date +'%F%t%T%t%Z'`] Keep Alive; sleep 1; done"

Выход:

[2015-07-06 13:44:36 UTC] Keep Alive
[2015-07-06 13:44:36 UTC] Keep Alive
[2015-07-06 13:44:36 UTC] Keep Alive
[2015-07-06 13:44:36 UTC] Keep Alive
[2015-07-06 13:44:36 UTC] Keep Alive

Почему не работает, если я пытаюсь запустить с /bin/bash -c? Верхняя строка примера является частью большого сценария systemd, который запускает контейнер Docker. Это часть этой строки:

ExecStart=/usr/bin/docker run --rm --name lanti-debian --hostname lanti-debian --user debuser --volume /home/core/share:/media/share:rw -p 8080:80 -p 8081:22 lanti-debian-li /bin/bash -c "while true; do echo [`date +'%F%t%T%t%Z'`] Keep Alive; sleep 1; done"

Эта строка будет поддерживать мой док-контейнер Debian. Мне нужна временная метка для отладки, когда я проверяю журнал fleetctl.

1 ответ1

1

Это происходит потому, что date команды раскрывается (и, следовательно, выполняется) только один раз, т. Е. Когда вы вызываете /bin/bash -c или другую команду run .

Все, что вам нужно сделать, это процитировать скрипт так, чтобы команда date выполнялась на каждой итерации. Двойные кавычки " расширять команду, одинарные кавычки ' будет:

/bin/bash -c 'while true; do echo [`date +%F%t%T%t%Z`] Keep Alive; sleep 1; done'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .