/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'