如何在后台设置 bash 屏幕并稍后将其带到前台?

如何在后台设置 bash 屏幕并稍后将其带到前台?

这是对这个问题的更深层次的解释。

我的目标是:

  1. 启动一个配置了一组环境变量但在后台运行的 bash shell。

  2. 发射约五屏幕bash shell 中的命令,每个命令都执行自己的命令,但使用 bash shell 中设置的环境变量。screen所有命令都应排列在 bash 窗口中,最好平铺。

  3. 稍后调用 bash shell,screen显示所有命令。

  4. screen完成后关闭 bash shell 和相关内容。

答案1

好吧,经过一段时间的思考,我得出了以下一些结论:

第 2 行:命令应该全部排列在 bash 窗口中,最好是平铺是不可能的,因为当分离时,没有窗户

因此,当您重新连接时,您将始终只看到一个伪终端

但要大致完成要求的操作,请尝试以下操作:

首先创建一个 RCfile,输入cat >screenRcTest以下内容:

setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i

然后准备一个run包装纸:

screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest

如果尚不存在,这将在后台运行一个新的屏幕会话。

对于建筑平铺演示,准备另一个 shell 脚本作为cat >screenSplitTest

#!/bin/bash

while read line ;do
    screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof

别忘了chmod +x screenSplitTest

最后运行显示命令作为:

xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest 

这将打开一个仅有bash准备就绪的新窗口。

在此bash,简单点击:

./screenSplitTest

这将分割您的窗口并让您在 bash 会话中再次做好准备。

结果截图

立即输入:

echo $MyVariable
Test

因此您将看到环境变量如何传递给子 bash。

编辑补充:

完成所有操作后,您可以在重击:

trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH

因此,您可以通过键入以下内容断开连接:Ctrl-A d然后下次使用xterm相同的参数和几何图形运行时,脚本 screenSplitTest 将自动启动。

编辑2

现在,你甚至可以将它安装trap在你的.bashrc,用于MyVariable确保 bash 是screenRc测试屏幕(移至constancescreenSplitTest中的隐藏文件之后$HOME/.screenSplitTest):

[ "$TERM.$MyVariable" == "screen.Test" ] && \
    trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH

答案2

据我所知,您无法平铺屏幕实例,但可以平铺 tmux 实例。您可以做的是为共享环境设置创建一个 rc 文件,然后使用将其加载到 5 个 bash shell 中的每一个bash --rcfile <your file here>

启动 tmux 即可启动 bash shell,在内部执行某些命令来为每个 bash 实例创建一个新的分割(例如,使用标准设置按 Ctrl+b% 进行垂直分割)。

相关内容