/ bin / bash -c parando a contagem com data

0

/ bin / bash -c não começa a contar com a data:

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

A saída é:

[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

Por que não funciona se eu tentar executar com /bin/bash -c ? A linha de exemplo superior faz parte de um script systemd maior, que está iniciando um contêiner do Docker. Faz parte desta linha:

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"

Esta linha irá manter vivo o meu container docker Debian. Eu preciso do timestamp para depuração quando eu inspecionar com o diário fleetctl.

    
por Lanti 06.07.2015 / 15:52

1 resposta

1

Isso acontece porque o comando date é expandido (e, portanto, executado) apenas uma vez, ou seja, quando você invoca /bin/bash -c ou o outro comando run .

Tudo o que você precisa fazer é citar o script para que o comando date seja executado a cada iteração. Aspas duplas " expandirão o comando, aspas simples ' não:

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