在终端间循环并执行命令的bash或python命令?
简单来说,我遇到的问题是:我正在用两个bash终端连接到两个服务器,并在这些服务器上运行程序,我需要不断查看它们的输出。Server1的输出在terminal1上显示,而Server2的输出在terminal2上显示。
我想知道有没有办法运行一个脚本,它能知道有多少个终端是打开的,并且能够在这些终端之间切换,执行bash命令。
伪代码:
open terminal1
run program1
open terminal2
run program2
switch to terminal1
run program3 on terminal1
4 个回答
2
一个可以替代 screen
的工具是 tmux。当你把屏幕分割成你需要的样子后,你可以从一个单独的终端向任意一个屏幕发送命令,像这样:
tmux send-keys -t sessionname:0.0 "ls -al" "Enter"
tmux send-keys -t sessionname:0.1 "ls -al" "Enter"
这里的 -t
选项是用来指定“会话名:窗口编号:面板编号”。我觉得你在 screen
中也可以做类似的事情,不过我自己没有用过。
如果你觉得有两个独立的屏幕不是特别重要,你还可以考虑使用一个叫 fabric 的 Python 工具。这个工具可以让你编写脚本,向多个服务器发送命令并获取结果。
3
当然可以!请看下面的内容:
这段代码是用来处理某种特定任务的。它可能涉及到一些数据的输入、处理和输出。具体来说,代码的每一部分都有它的作用,比如获取用户输入、进行计算或者显示结果。
如果你是编程新手,可能会觉得这些代码看起来有点复杂,但其实只要一步一步理解,每一行代码的意思就会变得清晰起来。比如,某些函数可能是用来执行特定操作的,而变量则是用来存储数据的。
总之,理解代码的关键在于分解它,逐行分析,弄清楚每一部分在做什么。这样,你就能更好地掌握整个程序的逻辑了。
In [5]: import subprocess
In [6]: import shlex
In [7]: subprocess.Popen(shlex.split('gnome-terminal -x bash -c "ls; read -n1"'))
Out[7]: <subprocess.Popen object at 0x9480a2c>
2
screen 是一个工具,可以让你在一个窗口里同时运行多个程序。想象一下,你在电脑上打开了很多个小窗口,每个窗口里都在做不同的事情。这个工具就像是一个超级窗口管理器,帮助你更方便地切换和管理这些程序。