我想sleep
在这两个restart
服务器之间的这根衬垫之间稍作停顿(也许是某种方式?),因为该服务器上有很多容器,并且减慢重新启动的速度将减少负载高峰。如果可能的话,我希望将其保留为一个衬里,并避免将其放入bash shell脚本文件中。我知道如何sleep
在bash脚本中将for放入for循环中,但是我不知道如何将其放入其中。这个$()
部分叫什么?
docker restart $(docker ps --format "{{.Names}}" | grep -v somename)
因此,我只想列出一个正在运行的容器,并在每次重新启动之间有30秒的暂停时间来重新启动每个容器。
的意思$()
按这里是:
语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式$(command)是现代的同义词
command
,代表命令替换;这意味着,运行命令并将其输出放在此处。
您需要执行所有重新启动然后暂停的操作是在$(docker ps --format "{{.Names}}" | grep -v somename)"
命令中的各行上循环,docker restart $line
然后在该循环内执行一个命令,然后执行一个sleep 30
命令(持续30秒)。
像这样:
items=$(docker ps --format "{{.Names}}" | grep -v somename)
for word in items
do
docker restart $word
sleep 30
done
items=$(docker ps --format "{{.Names}}" | grep -v somename)
这行代码设置了一个名为string的变量items
,它包含所有用空格分隔的容器的名称,就像在原始命令中所做的那样。
for word in items
自动用空格分隔字符串,在for
循环的每次迭代中为您提供不同的容器名称。
之间
do
和
done
我们有用items
字符串中每个单词执行的代码,如下所示
docker restart $world
我们像您一样重新启动docker容器,但仅对其中一个容器,其名称从读取$word
。
sleep 30
我们睡眠30秒,然后再次迭代下一个$word
值。
如果您希望可以单行运行的压缩版本,可以执行以下操作:
items=$(docker ps --format "{{.Names}}" | grep -v somename);for word in items; do; docker restart $word; sleep 30; done;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句