Jak mogę automatycznie rozpocząć wiele sesji ekranowych?


19

Próbuję zbudować polecenie, które uruchamia się screen, tworzy cztery sesje o różnych nazwach i uruchamiam cztery różne polecenia.

Wiem, jak to zrobić ręcznie:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

Czy mogę to zrobić za pomocą skryptu bash lub czegoś takiego? Jak mam to zrobić?

Odpowiedzi:


14

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"odrodzi się ekran działający $COMMANDw tle.

Możesz zobaczyć aktywne sesje z screen -lsi połączyć się ponownie screen -r "$SESSION_NAME".

Martwe sesje można zabić screen -wipe.


Wykonuje pracę!
przytula

To polecenie tworzy nową sesję ekranu dla każdego polecenia. Nie można go użyć do utworzenia pojedynczej sesji ekranowej zawierającej jedno okno dla każdego polecenia (tak jak robią to ręczne kroki w pytaniu). Dlatego nie odpowiada na pytanie, a .screenrczamiast tego należy przyjąć odpowiedź poniżej.
Tey '27

czy jest jakaś realna zaleta dla sesji z wieloma oknami, jeśli wszystko, co chcesz, to tanio utrzymać coś w tle?
LawrenceC

27

Aby automatycznie rozpocząć wiele sesji, skonfiguruj .screenrcplik, plik konfiguracyjny dla ekranu. Można w nim tworzyć sesje, uruchamiać programy, zmieniać działający katalog itp. Używam go do inicjowania sesji ekranowej.

Prosty przykład dla pliku .screenrc:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

Powyższe screenpolecenia tworzą jedną sesję ekranu. -tustawia tytuł sesji; reszta linii to polecenie do uruchomienia i jego parametry.

Tak więc pierwsza i druga screenlinia rozpoczynają sesję i uruchamiają się vimwewnątrz. Trzeci po prostu rozpoczyna sesję i wysyła cię po monicie. chdirzmienia katalog roboczy dla wszystkich kolejnych sesji.

Jeśli chcesz mieć wiele .screenrcplików, po prostu nazwij je w dowolny sposób i wybierz jeden za pomocą screen -c myscreenrc.


5

Możesz używać jednocześnie opcji d, m, S:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: Aby utworzyć ekran

d: odłączyć od ekranu

m: Aby wymusić utworzenie ekranu, niezależnie od tego, czy ekran jest wywoływany z innego ekranu, czy nie.


3
Interesujące, że możesz tak napisać, zamiast screen -dmS s1itd. Nie wiedziałem, że przy grupowaniu opcji ta z argumentem nie musi być ostatnia.
Tomasz Gandor
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.