通过 SSH 连接到服务器,执行更新命令,即使在注销 ssh 会话后该命令仍会继续

通过 SSH 连接到服务器,执行更新命令,即使在注销 ssh 会话后该命令仍会继续

好吧,我看到了很多这样的问题,但几乎所有问题都有理论答案来明确这个概念,但我仍然无法将其放入代码中。

我想使用 bash 脚本实现的是,使用循环,

  1. ssh到文件中提到的服务器(已完成)

  2. 对每个设备执行更新和升级命令。

  3. exit asa 命令已发出,但命令应继续在服务器上运行。

目前,使用正常的脚本来执行此操作,我可以ssh更新所有计算机,但要连续更新...一次只有一台计算机,因为ssh只有在完成更新和升级后才会退出。(操作定向到/dev/null以避免不必要的操作屏幕)

我看到像 nohup、screen/tmux 之类的选项来执行此操作...但我不知道如何使用其中任何一个来实现上述目标!

我怎样才能实现这个?

答案1

准备update.sh将在机器上运行的脚本。screen在里面运行它ssh

ssh user@host "screen -a -d -m -l -U /usr/local/sbin/update.sh"

利润。它将在分离的屏幕会话中运行更新脚本,该会话将在 update.sh 结束后立即结束。

相关内容