Jak uruchomić drugie polecenie w tej samej sesji ekranowej


12

Uruchamiam pierwsze polecenie na ekranie w następujący sposób:

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

co daje mi sesję ekranu działającą w tle i mogę ponownie połączyć się później.

Jak mogę uruchomić drugie polecenie w nowym oknie w tej samej sesji ekranowej?

Odpowiedzi:


11

Rozpocznij nazwaną sesję screen ( -S) z nazwanym window ( -t) dostosowującym się do rozmiaru terminala ( -A) w trybie odłączonym ( -d -m):

screen -S mySessionName -t myWinName0 -A -d -m

Uruchom inne nazwane okno ( -t) w tej samej sesji ekranowej ( -S):

screen -S mySessionName -X screen -t myWinName2

Włóż kilka poleceń ( -X stuff $'cmds') do pierwszego okna o nazwie ( -p) w sesji ( -S):

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Włóż kilka poleceń ( -X stuff $'cmds') do drugiego okna o nazwie ( -p) w sesji ( -S):

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Wymień sesje ekranowe i podłącz ponownie, aby zobaczyć, co się stało:

screen -ls
screen -r mySessionName

Uwaga: Linefeed ( \n) symuluje naciśnięcie Enter. Możesz także użyć średników do oddzielenia poleceń.


Nie musisz robić „rzeczy”. screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus,

4

Ekran wewnętrzny:

  • Ctrl-A, caby otworzyć nowe okno powłoki
  • Ctrl-A, :screen newcmdaby biegaćnewcmd

Na zewnątrz:

screen -X testen "screen newcmd"

cześć grawitacja , wiem o tym, ale chciałbym to zrobić ze skryptu inicjującego. w zasadzie chcę uruchomić 2 polecenia w osobnych oknach w tej samej sesji ekranowej. do zobaczenia

1
@bob: patrz przykład nr 3 „Ekran zewnętrzny” w tej odpowiedzi.
user1686

cześć grawitacja, screen -S testen -X 'screen echo "hi"'nie działa.

Nie udało mi się również uruchomić metody -X. Fwiw, mój ekran -v mówi „Wersja ekranu 4.00.03 (FAU) 23-paź-06”
Lauri Lehtinen,

4

Próbowałem powyższego podejścia, ale drugie polecenie nie wykonało się w drugim oknie. Lekko zmieniłem przykład, używając numeru okna zamiast nazwy okna:

  1. utwórz sesję

    screen -S mySessionName -t 0 -A -d -m
    
  2. utwórz drugie okno

    screen -S mySessionName -X screen -t 1
    
  3. wyślij polecenie do pierwszego okna

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. wyślij polecenie do drugiego okna

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. teraz sprawdź, czy polecenie zostało uruchomione w pierwszym oknie

    screen -R mySessionName -p 0
    
  6. teraz sprawdź, czy polecenie zostało uruchomione w drugim oknie

    screen -R mySessionName -p 1
    

Testowane z ekranem 4.00.03 (CENTOS 6.3 x64).


1

Możesz ustawić alternatywny plik .screenrc za pomocą -cargumentu. W tym nowym screenrc możesz skonfigurować wiele poleceń, które będą uruchamiane po zainicjowaniu sesji ekranu.

Na końcu tego alternatywnego pliku .screenrc umieść następujące polecenia:

screen 1 cmd1 args
screen 2 cmd2 args

Nie musisz konfigurować alternatywnego pliku konfiguracyjnego, jeśli planujesz uruchomić tylko jeden typ sesji ekranu, a domyślne polecenia są zawsze w porządku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.