Odpowiedzi:
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ń.
Ekran wewnętrzny:
:screen newcmd
aby biegaćnewcmd
Na zewnątrz:
screen -X testen "screen newcmd"
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:
utwórz sesję
screen -S mySessionName -t 0 -A -d -m
utwórz drugie okno
screen -S mySessionName -X screen -t 1
wyślij polecenie do pierwszego okna
screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
wyślij polecenie do drugiego okna
screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
teraz sprawdź, czy polecenie zostało uruchomione w pierwszym oknie
screen -R mySessionName -p 0
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).
Możesz ustawić alternatywny plik .screenrc za pomocą -c
argumentu. 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.
screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>