Как настроить bash-экран в фоновом режиме и перенести его на передний план?

2

Это более глубокое объяснение вопроса.

Моя цель:

  1. Запустите оболочку bash, настроенную с набором переменных среды, но работающую в фоновом режиме.

  2. Запустить около пяти экран Команды в оболочке bash, каждая из которых выполняет свои собственные команды, но использует переменные среды, установленные в оболочке bash. screen все команды должны быть расположены в окне bash, желательно выложены плиткой.

  3. Позвоните в оболочку Bash позже, со всеми screen показ команд.

  4. Закройте оболочку bash и связанные с ней screen когда сделано.

vfclists
источник
@KingSkippus Здесь довольно много хороших ответов, касающихся bash и screen, поэтому я дам их когда-нибудь.
vfclists

Ответы:

3

Что ж, через некоторое время по вашему вопросу появятся некоторые замечания:

строка 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

это запустит новый сеанс экрана в фоновом режиме, если он еще не существует.

Для строительства черепичные подготовьте другой сценарий оболочки как 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 готовы.

В этом внутренний Баш, ударил просто:

./screenSplitTest

Это разделит ваше окно и позволит вам снова подготовиться в вашей сессии bash.

result screenshoot

Введите сейчас:

echo $MyVariable
Test

Итак, вы увидите, как переменная среды передается дочернему bash.

Изменить дополнение:

Сделав все, вы можете нажать следующее внутренний Баш:

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

Так что вы можете отключиться, набрав: Ctrl-A d чем в следующий раз, когда вы бежите xterm с такими же аргументами и геометрией скрипт screenSplitTest будет запущен автоматически.

Редактировать 2

И теперь вы можете даже установить это trap в вашем .bashrc, с помощью MyVariable для обеспечения того, что Баш является ребенком screenRcTest экран (после перемещения screenSplitTest в скрытый файл в $HOME/.screenSplitTest для постоянства):

[ "$TERM.$MyVariable" == "screen.Test" ] && \
    trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
F. Hauri
источник
@FHauri Все, что я могу сказать, это Вау! Я вижу, вы только что присоединились к суперпользователю. Где вы были в прошлом, когда мы нуждались в вас? :)
vfclists
1
Поблагодарить! Я добавил немного .bashrc линия, чтобы сделать их более автоматический ,
F. Hauri
1

Насколько мне известно, вы не можете мозаичные экземпляры экрана, но вы можете мозаичные экземпляры tmux. Что вы могли бы сделать, это создать rc-файл для настроек общей среды, а затем загрузить его в каждый из 5 ваших оболочек bash, используя bash --rcfile <your file here>,

Оболочки bash запускаются при запуске tmux, а когда они находятся внутри, выполняются некоторые команды для создания нового разделения (например, Ctrl + b% для вертикального разделения с использованием стандартных настроек) для каждого экземпляра bash.

Jonatan
источник
tmux была еще одной утилитой, которую я имел в виду, но у меня нет опыта работы с ней, но я знаю, что однажды она будет полезна.
vfclists