Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Screen - program do "demonizowania" procesów

Witam, zapewne większość z Was zna prosty i wygodny program screen który pozwala minimalizować procesy na serwerach czy desktopach tak aby nawet po wylogowaniu nie zostały wyłączone.

Narzędzie jest bardzo proste w obsłudze, w tym artykule pokażę jego podstawowe zastosowanie.

Dla kogo jest przeznaczony ten artykuł? - Dla początkujących administratorów bądź majstrów Linuksowych.

Proces uruchomiony poprzez screen

Został zdemonizowany kombinacją CTRL+A+D

No więc tak, sam program posiada sporo funkcji którym można się przyjrzeć przez polecenie screen --help, jednak ja podam te najważniejsze, najczęściej używane.

Żeby wystartować dany program w nowej wirtualnej konsoli należy wywołać:

screen nazwa-polecenia

Następnie aby zdemonizować proces czyli rzucić w tło należy przytrzymać klawisz CTRL a następnie wcisnąć kolejno "a" i "d".

Można także uruchomić dane polecenie od razu zdemonizowane poprzez:

screen -dmS nazwa-sesji polecenie

Jest to przydatne, gdy np. przy starcie systemu musimy uruchomić jakiś program przykładem serwer gry - wtedy możemy do /etc/rc.local wrzucić taką zawartość:

su gra -c "screen -dmS serwer-gry /home/gra/bin/plik-uruchamajacy-serwer"

Powyższe polecenie uruchomi /home/gra/bin/plik-uruchamajacy-serwer jako użytkownik "gra" - bez uprawnień użytkownika root.

Oczywiście zdemonizowany proces można przywrócić przy pomocy odpowiedniego polecenia:

screen -rD nazwa-sesji

Jeżeli nie pamiętamy nazwy sesji, chcemy po prostu zobaczyć jakie sesje są aktywne należy wykonać:

screen -ls

Pozostałe funkcje programu screen widoczne są po wpisaniu screen --help

Use: screen [-opts] [cmd [args]] or: screen -r [host.tty] Options: -a Force all capabilities into each window's termcap. -A -[r|R] Adapt all windows to the new display width & height. -c file Read configuration file instead of '.screenrc'. -d (-r) Detach the elsewhere running screen (and reattach here). -dmS name Start as daemon: Screen session in detached mode. -D (-r) Detach and logout remote (and reattach here). -D -RR Do whatever is needed to get a screen session. -e xy Change command characters. -f Flow control on, -fn = off, -fa = auto. -h lines Set the size of the scrollback history buffer. -i Interrupt output sooner when flow control is on. -l Login mode on (update /var/run/utmp), -ln = off. -list or -ls. Do nothing, just list our SockDir. -L Turn on output logging. -m ignore $STY variable, do create a new screen session. -O Choose optimal output rather than exact vt100 emulation. -p window Preselect the named window if it exists. -q Quiet startup. Exits with non-zero return code if unsuccessful. -r Reattach to a detached screen process. -R Reattach if possible, otherwise start a new session. -s shell Shell to execute rather than $SHELL. -S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>. -t title Set title. (window's name). -T term Use term as $TERM for windows, rather than "screen". -U Tell screen to use UTF-8 encoding. -v Print "Screen version 4.00.03 (FAU) 23-Oct-06". -wipe Do nothing, just clean up SockDir. -x Attach to a not detached screen. (Multi display mode). -X Execute <cmd> as a screen command in the specified session.

PS. Jeżeli pojawi się Wam błąd "Cannot open your terminal '/dev/pts/0' - please check." należy wykonać polecenie script /dev/null - to powinno załatwić wszystko. 

Komentarze

0 nowych
XeonBloomfield   5 #1 05.02.2011 14:04

W tytule "Screen - program do \"demonizowania\" procesów" brakuje tylko liczby "666"...

webnull   9 #2 05.02.2011 14:05

@XeonBloomfield
Procesy działające w tle w Uniksach są nazywane demonami.

http://pl.wikipedia.org/wiki/Demon_(informatyka)

XeonBloomfield   5 #3 05.02.2011 14:10

Wiem, wiem... Tak tylko dopowiadam...

webnull   9 #4 05.02.2011 14:10

Wiesz szczerze Mnie nie rusza nazwa "demon", "diabeł" i tym podobne ponieważ nie wierzę w tego typu zjawiska.

XeonBloomfield   5 #5 05.02.2011 15:09

Ja również, jednak większość Polaków wierzy. Tak się po prostu trafia do mas.

przemek1234   7 #6 05.02.2011 19:07

A czy taki proces może startować przy starcie komputera, jeszcze przed zalogowaniem się do shella.

hnt   5 #7 05.02.2011 19:45

Bez screena jak bez ręki.

XeonBloomfield   5 #8 05.02.2011 20:20

@przemek1234 | 05.02.2011 19:07:
"Jest to przydatne, gdy np. przy starcie systemu musimy uruchomić jakiś program przykładem serwer gry - wtedy możemy do /etc/rc.local wrzucić taką zawartość:

su gra -c "screen -dmS serwer-gry /home/gra/bin/plik-uruchamajacy-serwer"


Powyższe polecenie uruchomi /home/gra/bin/plik-uruchamajacy-serwer jako użytkownik "gra" - bez uprawnień użytkownika root."

Mowa właśnie o tym o czym mówisz. Plik "/etc/rc.local" w systemach bazujących na Debian'ie (czy na innych - nie wiem) uruchamia się krótko po wystartowaniu głównych demonów systemowych, gdy włącza się system/serwer. Nie potrzeba do tego logowania się do shell'a.

webnull   9 #9 05.02.2011 21:43

@przemek1234
Oczywiście.

@hnt
Dookładnie ;-)

XeonBloomfield   5 #10 05.02.2011 21:49

@webnull | 05.02.2011 21:43:

"Rączka" = "webnull-oneill% screen"

Vifon   5 #11 05.02.2011 22:12

Ja od siebie dodam, że to zaledwie wierzchołek góry lodowej. Screen nie bez powodu jest nazywany multiplekserem terminala. Można w nim otworzyć kilka innych terminali i się między nimi przełączać. Również bardzo przydatne przy zdalnych sesjach, gdzie nie możemy otworzyć sobie drugiego okienka. Kilka podstawowych skrótów, wszystkie poprzedzane tą samą kombinacją (domyślnie ctrl-a):
c - nowe okno
n - następne okno
p - poprzednie okno
d - wspomniane "odłączanie" się od sesji
Przy odrobinie roboty można sobie dorobić nawet pasek zadań. Jest też podobny program, tmux, który ma go w standardzie.
Ogólnie, polecam lekturę manuala, bo to naprawdę potężne narzędzie, a większość użytkowników wykorzystuje na oko jakieś 5% jego możliwości.

TestamenT   12 #12 05.02.2011 23:05

Wy nie wierzycie w demony tak? A Ubuntu Satanic Edition to co? :D

Bez screena nie da się żyć przy ssh.

webnull   9 #13 05.02.2011 23:59

@TestamenT
"Bez screena nie da się żyć przy ssh."

Fakt, bez screena lub odpowiednika nieda się ;-)

"Wy nie wierzycie w demony tak? A Ubuntu Satanic Edition to co? :D"

To wydanie nieoficjalne dla ludzi którzy czczą odpowiedni kult, ja do nich nie należę ;-)

przemor25   14 #14 06.02.2011 09:09

@TestamenT

"A Ubuntu Satanic Edition to co? :D"

Ciekawe jaki ma numerek :)

przemek1234   7 #15 06.02.2011 09:17

@webnull:
Wiara w istnienie demonów nie jest jednoznaczna z kultem ich.

PS. Skończcie off-top, bo to nie jest portal religijny.

webnull   9 #16 06.02.2011 10:19

@przemor25
Zapewne "rok.66" a najlepszym wydaniem było to z 6 czerwca 2006 roku ;-)

kwpolska   6 #17 06.02.2011 11:32

Procesy w tło można wysłać przy pomocy ^Z i przywrócić je komendą fg.

webnull   9 #18 06.02.2011 12:12

@kwpolska
Ale nie wylogujesz się ze shella tym sposobem :-)

XeonBloomfield   5 #19 06.02.2011 12:27

@kwpolska | 06.02.2011 11:32:

Screen pozwala na włączenie zupełnie oddzielnej instancji terminala w tle. W przypadku normalnych (zwracając się do tego, co piszesz) po wylogowaniu z SSH aplikacja by po prostu zniknęła, bo proces, który ją wywołał "sshd" również zakończył działanie.

kwpolska   6 #20 06.02.2011 18:05

@XenonBloomfield
Wiem. Sam używam screena. ^Z osobiście nie znoszę, ale tylko przypominałem.
"Plik "/etc/rc.local" w systemach bazujących na Debian'ie (czy na innych - nie wiem)"
Debianie* i jest w większości linuksów (Arch, Fedora na pewno)

  #21 09.02.2011 22:47

Można by jeszcze wspomnieć o projekcie Byobu*, który jest trochę bardziej przyjazny dla użytkownika (w każdym razie wygląda mniej groźnie zaraz po uruchomieniu od leciwego screena, no i chyba jest teraz domyślnie wrzucany do Ubuntu)...


*byobu: https://launchpad.net/byobu

artymienek   7 #22 13.02.2011 09:19

+ za wpis, bo zacząłem korzystać na zwykłym kompie, zawsze to mniej okienek na pulpicie, a ja lubię mieć porządek.

  #23 13.03.2012 15:35

a jak uruchomić screena z obsługą utf-8 w trybie demona?
-dms uruchamia i minimalizuje
-U dodaje obsługę utf
ale razem to nie działa