等待linux机器重新启动

The*_*heo 3 linux ssh reboot

我有一个小脚本可以在我的远程计算机上安装更新。

我想远程重新启动机器,如果重新启动,请继续执行更多命令。我目前所做的是:

ssh root@myMachine << COMMANDS_ISSUED
   ###... Tasks
   init 6
COMMANDS_ISSUED
sleep 180s
ssh root@myMachine << POST_REBOOT_COMMANDS
   ###.... More stuff
POST_REBOOT_COMMANDS
Run Code Online (Sandbox Code Playgroud)

有更优雅的方法吗?比如 ping 机器 5 秒到最多 4 分钟?我使用了几台具有不同启动时间的 Linux 机器,如果我的脚本在重新启动后立即继续,这对我来说可以安全相当长的时间。(注意:我不想在所有机器上并行执行,因为我想查看每台机器是否一切正常)

小智 5

我会说 ping 机器直到它启动。

while ! ping -c 1 192.168.1.1 &>/dev/null; do :; done
Run Code Online (Sandbox Code Playgroud)

“c 1”将一次发送一个请求,因此每个循环一个。如果没有响应 ping 将返回 false 并且循环将继续。

循环体是空的 - 如果需要,您可以在其中放置一个简短的睡眠命令。否则,使用冒号“:”,即[无操作命令][1]。这是因为循环体不能为空。