/bin/bash -c 停止按日期计数

/bin/bash -c 停止按日期计数

/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 docker 容器保持活动状态。当我使用 fleetctl journal 检查时,我需要时间戳来进行调试。

答案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'

相关内容