11

Я запускаю первую команду на экране следующим образом:

screen -d -m -S testen -t lalala watch df -h

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

Как я могу запустить вторую команду в новом окне в том же сеансе экрана?

4 ответа4

11

Начните именованный сеанс экрана (-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. Вы также можете использовать точки с запятой для разделения команд.

4

Попробовал вышеуказанный подход, но вторая команда не выполнилась во втором окне. Я немного скорректировал пример, используя номер окна вместо имени окна:

  1. создать сессию

    screen -S mySessionName -t 0 -A -d -m
    
  2. создать второе окно

    screen -S mySessionName -X screen -t 1
    
  3. отправить команду в первое окно

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. отправить команду во второе окно

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. Теперь проверьте, была ли команда запущена в первом окне.

    screen -R mySessionName -p 0
    
  6. Теперь проверьте, была ли команда запущена во втором окне.

    screen -R mySessionName -p 1
    

Протестировано с Screen 4.00.03 (CENTOS 6.3 x64).

3

Внутренний экран:

  • Ctrl-A, c, чтобы открыть новое окно оболочки
  • Ctrl-A :screen newcmd для запуска newcmd

За пределами:

screen -X testen "screen newcmd"
1

Вы можете установить альтернативный .screenrc через аргумент -c . В этом новом screenrc вы можете настроить несколько команд для запуска при инициализации сеанса экрана.

В конце этого альтернативного .screenrc поместите следующие команды:

screen 1 cmd1 args
screen 2 cmd2 args

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

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