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

如何在Linux系统的VS Code中用Python脚本实现分屏终端并执行指定Docker命令

如何在Linux系统的VS Code中用Python脚本实现分屏终端并执行指定Docker命令

嘿,我来帮你搞定这个需求!要在VS Code的Linux终端里自动分屏、同时执行两个Docker命令,其实用Python结合VS Code的命令行工具就能轻松实现,完全不用手动按快捷键。下面给你两种靠谱的方案,按需选就行:

方案一:精准模拟手动分屏操作(VS Code内置终端)

这个方案完全贴合你手动按Ctrl+Shift+5分屏的逻辑,通过Python调用VS Code的命令行接口完成所有操作:

步骤1:编写Python脚本

直接把下面的代码保存成run_docker_commands.py:

import subprocess
import time

# 定义你要执行的两个Docker命令
cmd1 = "sudo docker run --network=host --volume /home/villas/results:/villas/build/results --volume /home/villas/Docker-containers/webrtc-rtt.conf:/config.conf --privileged registry.git.rwth-aachen.de/acs/public/villas/node:master node /config.conf"
cmd2 = "sudo docker run --network=host --volume /home/villas/results:/villas/build/results --volume /home/villas/Docker-containers/webrtc-loopback.conf:/config.conf --privileged registry.git.rwth-aachen.de/acs/public/villas/node:master node /config.conf"

# 1. 打开第一个VS Code终端(如果当前没有的话)
subprocess.run(["code", "--command", "workbench.action.terminal.new"], check=True)
time.sleep(0.5)  # 给终端留一点启动时间,避免命令发送失败

# 2. 向第一个终端发送第一个Docker命令并执行
subprocess.run(
    ["code", "--command", "workbench.action.terminal.sendSequence", f"text:{cmd1}\n"],
    check=True
)
time.sleep(0.3)

# 3. 触发终端分屏(模拟Ctrl+Shift+5的操作)
subprocess.run(["code", "--command", "workbench.action.terminal.split"], check=True)
time.sleep(0.5)

# 4. 向分屏后的第二个终端发送第二个Docker命令并执行
subprocess.run(
    ["code", "--command", "workbench.action.terminal.sendSequence", f"text:{cmd2}\n"],
    check=True
)

步骤2:解决sudo密码问题

因为命令里用到了sudo,直接运行脚本会卡在输入密码的步骤,建议给当前用户配置Docker免密权限:

  1. 运行sudo visudo打开sudoers配置文件
  2. 在文件末尾添加一行(把your_username换成你的实际用户名):
    your_username ALL=(ALL) NOPASSWD: /usr/bin/docker
    
  3. 按Ctrl+O保存,Ctrl+X退出编辑

步骤3:运行脚本

在VS Code的终端里执行python3 run_docker_commands.py,就能看到终端自动分屏,两个Docker命令同时跑起来了!

方案二:启动独立终端窗口(备选)

如果VS Code命令行的方法偶尔出现焦点问题,也可以用这个方案直接启动两个系统终端窗口执行命令(适合不需要严格在VS Code分屏的场景):

import subprocess

cmd1 = "sudo docker run --network=host --volume /home/villas/results:/villas/build/results --volume /home/villas/Docker-containers/webrtc-rtt.conf:/config.conf --privileged registry.git.rwth-aachen.de/acs/public/villas/node:master node /config.conf"
cmd2 = "sudo docker run --network=host --volume /home/villas/results:/villas/build/results --volume /home/villas/Docker-containers/webrtc-loopback.conf:/config.conf --privileged registry.git.rwth-aachen.de/acs/public/villas/node:master node /config.conf"

# 启动第一个终端执行命令1
subprocess.Popen(["gnome-terminal", "--", "bash", "-c", cmd1])
# 启动第二个终端执行命令2
subprocess.Popen(["gnome-terminal", "--", "bash", "-c", cmd2])

注意:这个方案用的是gnome-terminal,如果你用的是其他桌面环境(比如KDE用konsole,XFCE用xfce4-terminal),把命令里的gnome-terminal换成对应终端的命令就行。

一些小提示

  • 要是脚本执行时命令发送失败,试着把time.sleep()的时间调长一点(比如改成1秒),给VS Code足够的响应时间
  • 确保VS Code的code命令已经加入系统PATH,一般安装VS Code后会自动配置,要是没找到可以手动添加:export PATH="$PATH:/usr/share/code/bin"

备注:内容来源于stack exchange,提问作者HUH987

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:05:29