Ответы:
Запустите именованный сеанс экрана ( -S
) с именованным window ( -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
Протестировано с Screen 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>