You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Shell脚本连接服务器并在screen中执行命令?

编写Shell脚本自动SSH连接服务器并创建Screen会话执行命令

你可以通过SSH的批量命令传递功能,结合Screen的后台启动参数,实现完全自动化的操作,无需手动交互。以下是实现脚本:

#!/bin/bash

# 连接machine1并创建screen会话执行命令
ssh machine1 << 'EOF'
# 切换到项目目录
cd project_folder
# 后台创建screenA会话并运行指定Python命令
screen -dmS screenA python run.py -x
# 后台创建screenB会话并运行指定Python命令
screen -dmS screenB python run.py -y
EOF

# 连接machine2并执行相同逻辑
ssh machine2 << 'EOF'
cd project_folder
screen -dmS screenA python run.py -z
screen -dmS screenB python run.py -t
EOF

关键说明:

  • Here Document(EOF):用这种方式可以一次性向远程服务器传递多条命令,避免多次SSH连接,也不用手动输入交互命令。给EOF加单引号能防止本地变量被解析,确保命令原封不动传到远程执行。
  • Screen后台启动参数:screen -dmS <会话名> <命令>是核心逻辑,参数含义:
    • -d:让会话在后台运行,无需进入交互界面
    • -m:强制创建新的会话
    • -S:指定会话名称,方便后续管理(比如用screen -r screenA重新连接会话)
  • 路径与命令可靠性:如果project_folder不是远程用户的默认目录,或者python/screen需要指定绝对路径,建议写成完整路径,示例:
    screen -dmS screenA bash -c "cd /home/user/project_folder && /usr/bin/python3 run.py -x"
    

使用步骤:

  1. 把上述脚本保存为auto_deploy.sh
  2. 给脚本添加执行权限:chmod +x auto_deploy.sh
  3. 运行脚本:./auto_deploy.sh

前置条件:

确保本地机器已配置免密登录目标服务器,否则脚本运行时会卡在输入密码环节。配置方法:

  • 本地生成密钥:ssh-keygen(一路回车用默认设置即可)
  • 把公钥传到目标服务器:ssh-copy-id machine1 和 ssh-copy-id machine2

内容的提问来源于stack exchange,提问作者Blue Lama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:05:28