将 Echo 命令与 Sleep 命令结合使用

将 Echo 命令与 Sleep 命令结合使用

所以几周前我在这里问了一个问题,我得到的答复很有帮助,但我想我应该添加一些信息以获得更好的答复。

我使用的计算机系统有 8 台服务器(4 个主服务器、4 个备用服务器),这些服务器上有 16 个节点(每台服务器上有 4 个节点,每个备用服务器上有相同的节点)。在服务器上线之前,节点无法加载。所以我一直在编写两行独立的代码,直到我弄清楚如何将它们连接在一起。

for i in `echo server1; echo server2; echo server 3; echo server4; echo server5; echo server6; echo server7; echo server8`; do
echo $i
/remcmd $i username password 'superuser /reboot'
echo
done

那么我的第二个命令是

for i in `echo node1; echo node2; echo node3; echo node4; echo node5; echo node6; echo node7; echo node8; echo node9; echo node10; echo node11; echo node12; echo node13; echo node14; echo node15; echo node16
/remcmd $i username password 'superuser /reboot'

有没有办法重新启动服务器,然后等待 9 分钟,然后重新启动节点。我尝试过管道,但做了一些研究,但它不喜欢它。

任何人可以提供的帮助,我将不胜感激。

答案1

使用at安排将来的命令(man at供使用)。在您的服务器上或在节点上,具体取决于它们是什么以及哪个更适合控制重新启动。

servers="server1 server2 server3 server4"
nodes="node1 node2 node3 node4"
remcmd="something"

for server in $servers; do
  echo "server [$server]"

  for node in $nodes; do
    echo "node [$node]"

    # Locally schedule a node reboot in 9 minutes
    at now + 9 minutes <<< "$remcmd $node username password 'superuser /reboot'"

    # or remotely schedule the node reboot
    $remcmd $node username password 'at now + 9 minutes <<< "superuser /reboot"'
  done    

  # Reboot server now
  $remcmd $server username password 'superuser /reboot'
done

相关内容