Як я можу автоматично запустити кілька сеансів на екрані?


21

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

Я знаю, як це зробити вручну:

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

Чи можу я це зробити за допомогою сценарію bash чи чогось іншого? Як би я це зробив?

Відповіді:


15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"породжує екран, який працює $COMMANDу фоновому режимі.

Ви можете бачити активні сеанси з screen -lsі повторно встановити зв'язок із ними screen -r "$SESSION_NAME".

Мертві сеанси можна вбити за допомогою screen -wipe.


Це робить роботу!
обіймає

1
Ця команда створює новий екран для кожної команди. Його не можна використовувати для створення сеансу на одному екрані, що містить одне вікно для кожної команди (як це зроблено вручну в кроці). Таким чином, він не відповідає на запитання, і .screenrcвідповідь, подана нижче, повинна була бути прийнята натомість.
Tey '27

чи є реальна перевага для мульти-вікон-одного сеансу, якщо все, що ви робите, - це дешево зберегти щось, що працює у фоновому режимі?
LawrenceC

29

Щоб автоматично запустити кілька сеансів, встановіть .screenrcфайл, конфігураційний файл для екрана. У ньому ви можете створювати сеанси, запускати програми, змінювати робочий dir і т.д. Я використовую його для ініціалізації мого сеансу на екрані.

Простий іспит на .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.


5

Ви можете використовувати параметри d, m, S разом:

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

S: Щоб створити екран

d: від'єднання від екрана

m: Для примусового створення екрана, незалежно від того, викликається екран з іншого екрана чи ні.


3
Цікаво, що ви можете писати так, замість screen -dmS s1тощо. Я не знав, що при групуванні параметрів той, який має аргумент, не повинен бути останнім.
Томаш Гандор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.