等待 Linux 机器重新启动

等待 Linux 机器重新启动

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

我想远程重启机器,如果机器重启了,继续执行其他命令。我现在做的是:

ssh root@myMachine << COMMANDS_ISSUED
   ###... Tasks
   init 6
COMMANDS_ISSUED
sleep 180s
ssh root@myMachine << POST_REBOOT_COMMANDS
   ###.... More stuff
POST_REBOOT_COMMANDS

有没有更优雅的方法?比如每 5 秒 ping 一次机器,最多 4 分钟?我玩过几台启动时间不同的 Linux 机器,如果我的脚本在重启后立即继续,这可以节省相当多的时间。(注意:我不想在所有机器上并行执行,因为我想看看每台机器是否一切正常)

答案1

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

while ! ping -c 1 192.168.1.1 &>/dev/null; do :; done

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

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

答案2

你可以像这样定义一个 crontab:

@reboot script-to-execute

相关内容