在bash中防止请求太快

我必须在bash脚本中启用,停止并重新启动docker。 问题是这个命令是用ssh-connection来执行的。 所以执行该命令后,ssh-connectionclosures。 所以没有足够的时间来启动和停止docker。 我得到这个错误:

docker.service启动请求重复得太快了

我怎样才能防止这个? 是否有可能在同一个命令中执行sleep

  ${SSHKEY}$i sudo systemctl start docker ${SSHKEY}$i sleep 4 

以上不起作用,因为连接closures。 我试过了:

 ${SSHKEY}$i sudo systemctl start docker; sleep 1 

但似乎没有工作,因为第一个命令后立即closures连接。

阅读文档和手册页。 Systemd有一个非常整洁: systemd.service :

StartLimitInterval =StartLimitBurst =

configuration服务启动速率限制。 默认情况下,在10秒内启动超过5次的服务不允许再次启动,直到10秒间隔结束。 有了这两个选项,这个速率限制可以修改。 使用StartLimitInterval =configuration检查时间间隔(默认为pipe理器configuration文件中的DefaultStartLimitInterval = 0,设置为0以禁用任何types的速率限制)。 使用StartLimitBurst =来configuration允许每个间隔启动多less次(在pipe理器configuration文件中默认为DefaultStartLimitBurst =)。 这些configuration选项在与Restart =相结合时特别有用。 然而,它们适用于各种启动(包括手动),而不仅仅是由Restart =逻辑触发的启动。 请注意,configuration为Restart =且达到启动限制的单元不会尝试重新启动; 然而,他们仍然可以在稍后的时间手动重新启动,从这一点开始,重新启动逻辑再次被激活。 请注意,systemctl重置失败将导致刷新服务的重新启动速率计数器,如果pipe理员想要手动启动服务并且启动限制会干扰此情况,这非常有用。

StartLimitAction =

configuration如果使用StartLimitInterval =和StartLimitBurst =configuration的速率限制命中,则执行的操作。 采取一个,重新启动,重新启动力量,重新启动立即,poweroff,poweroff-force或poweroff-immediate。 如果没有设置,则触发速率限制将不会触发任何动作,而且不允许启动。 正常关机程序(即相当于systemctl重新启动)后重新启动会导致重新启动。 reboot-force会导致强制重启,强制终止所有进程,但在重启时不会导致脏文件系统(即等同于systemctl reboot -f),而reboot-immediate会立即执行重启(2)系统调用,这可能导致在数据丢失。 与类似的语义类似,poweroff,poweroff-force,poweroff-immediate具有使系统掉电的效果。 默认为无。

基本上你需要设置这些选项来满足你在Docker服务文件中的需求,或者在/etc/systemd/system.conf全局地设置,例如DefaultStartLimitBurst=100

首先只会执行一个命令。 尝试

 sudo whoami; whoami 

你想要2个命令睡觉吗?

 echo "whoami; sleep 3; whoami" > restartDocker chmod 777 restartDocker sudo ${PWD}/restartDocker