ssh批量远程执行脚本screen后台运行
背景
项目有并行计算需求,配置了36台服务器集群,通过脚本自动后台执行任务。
准备
部署时将操作机ssh公钥拷贝至每台集群服务器,确保可以无密码执行scp和ssh命令。
安装avahi-daemon
确保可已通过hostname连接服务器
安装screen
用于后台运行
实现
在本地编写需要执行的脚本~/task.sh
自动执行脚本如下
#!/bin/bash
list=(TEST-00 TEST-01 TEST-02 TEST-03)
for host in ${list[*]}
do
scp -o "StrictHostKeyChecking no" ~/task.sh user@$host:/tmp/task.sh
ssh -o "StrictHostKeyChecking no" user@$host screen -dm bash /tmp/task.sh
done
其中-o "StrictHostKeyChecking no"
参数可避免输入yes中断脚本
后台命令screen -dm [cmooand]
可以创建新的screen session
执行command命令后detach而不进入session
ssh会话中断后cmooand依然执行