Відповіді:
Запустіть названий екранний сеанс ( -S) з іменованим вікном ( -t), адаптуючись до розміру терміналу ( -A) у відірваному режимі ( -d -m):
screen -S mySessionName -t myWinName0 -A -d -m
Запустіть ще одне вікно з назвою ( -t) у тому ж сеансі екрану ( -S):
screen -S mySessionName -X screen -t myWinName2
Введіть кілька команд ( -X stuff $'cmds') у перше назване вікно ( -p) у сеансі ( -S):
screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
Введіть кілька команд ( -X stuff $'cmds') у друге назване вікно ( -p) у сеансі ( -S):
screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'
Перелічіть екранні сеанси та повторно вкладіть, щоб побачити, що сталося:
screen -ls
screen -r mySessionName
Примітка: Подача рядка ( \n) імітує натискання Enter. Ви також можете використовувати крапки з комою для розділення команд.
Внутрішній екран:
:screen newcmdбігатиnewcmdЗовні:
screen -X testen "screen newcmd"
Спробував вище підхід, але друга команда не виконувалась у другому вікні. Я трохи коригував приклад, використовуючи номер вікна, а не ім'я вікна:
створити сеанс
screen -S mySessionName -t 0 -A -d -m
створити друге вікно
screen -S mySessionName -X screen -t 1
відправити команду в перше вікно
screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
відправити команду у друге вікно
screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
тепер перевірте, чи команда виконується в першому вікні
screen -R mySessionName -p 0
тепер перевірте, чи команда виконується у другому вікні
screen -R mySessionName -p 1
Тестований на екрані 4.00.03 (CENTOS 6.3 x64).
Ви можете встановити альтернативний .screenrc через -cаргумент. У цьому новому screenrc ви можете встановити кілька команд, які можна запустити при ініціалізації сеансу на екрані.
В кінці цього альтернативного .screenrc поставити наступні команди:
screen 1 cmd1 args
screen 2 cmd2 args
Вам не потрібно налаштовувати альтернативний файл конфігурації, якщо ви плануєте запускати лише один тип екранного сеансу, і запускаються команди за замовчуванням завжди добре.
screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>