Як запустити другу команду в тому ж сеансі екрану


12

Я запускаю першу команду на екрані так:

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

що дає мені сеанс на екрані, який працює у фоновому режимі, і я можу пізніше знову підключитися.

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

Відповіді:


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. Ви також можете використовувати крапки з комою для розділення команд.


Вам не доведеться робити «шматочки» бітів. screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Лотос

4

Внутрішній екран:

  • Ctrl-A, cщоб відкрити нове вікно оболонки
  • Ctrl-A, :screen newcmdбігатиnewcmd

Зовні:

screen -X testen "screen newcmd"

привіт, шанобливість , я знаю це, але я хотів би зробити це з сценарію init. в основному я хочу запустити 2 команди в окремі вікна в одному сеансі екрану. побачимось

1
@bob: див. приклад №3 "Зовнішній екран" у цій відповіді.
користувач1686

привіт скупий, screen -S testen -X 'screen echo "hi"'не працює.

Я також не зміг змусити метод -X працювати. Fwiw, на моєму екрані -v написано "Версія екрана 4.00.03 (FAU) 23-жовтень-06"
Lauri Lehtinen

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
    

Тестований на екрані 4.00.03 (CENTOS 6.3 x64).


1

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

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

screen 1 cmd1 args
screen 2 cmd2 args

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.