19

Я пытаюсь создать команду, которая запускает screen , создает четыре сессии с разными именами и запускает четыре разные команды.

Я знаю, как сделать это вручную:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

Могу ли я сделать это с помощью сценария Bash или что-то? Как бы я это сделал?

3 ответа3

26

Чтобы запустить несколько сеансов автоматически, настройте файл .screenrc файл конфигурации для экрана. В нем вы можете создавать сеансы, запускать программы, изменять рабочий каталог и т.д. Я использую его для инициализации сеанса экрана.

Простой экзамен для файла .screenrc:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

Команды screen над каждым создают один сеанс экрана. -t устанавливает заголовок сессии; остальная часть строки - команда для запуска и ее параметры.

Таким образом, первая и вторая строки screen запускают сеанс и запускают vim внутри. Третий просто начинает сеанс и выводит вас по запросу. chdir изменяет рабочий каталог для всех последующих сеансов.

Если вы хотите иметь несколько файлов .screenrc , просто назовите их по своему усмотрению и выберите один с помощью screen -c myscreenrc .

14

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS" вызовет экран с $COMMAND в фоновом режиме.

Вы можете увидеть активные сеансы с screen -ls и заново подключиться с screen -r "$SESSION_NAME" .

Мертвые сессии могут быть убиты с screen -wipe .

5

Вы можете использовать опции d, m, S вместе:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: создать экран

d: отсоединиться от экрана

m: для принудительного создания экрана независимо от того, вызывается ли экран из другого экрана или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .