NOHUP i SCREEN, czyli wirtualne sesje w Linuksie


 

Ok, stało się – oto mój pierwszy “techniczny” artykuł. Napisaliśmy na blogu już niejednokrotnie, że uczymy się razem z wami i dzielimy zdobytą wiedzą, i  jako, że zacząłem uczyć się Linuksa… przepraszam GNU Linux … …to postanowiłem uzewnętrznić się i opisać tu moje boje:)

To, o czym napiszę nie jest rzeczą super skomplikowaną – jedno polecenie, jednakże bardzo przydatne i standardowo niedostępne w dystrybucji Ubuntu (Lubuntu dokładniej), na której postawiłem serwer do nauki. A co zmotywowało mnie do nauki Linux? Wcale nie sprawy służbowe… Głupi temat – chciałem pograć z znajomymi w (wait for it….) Minecrafta :-)

Sprawiłem sobie mały energooszczędny Nano PC od Foxconna i zarządzam nim łącząc się przez SSH. Zapewne temat stawiania serwerów opiszą moi bardziej zaawansowani technicznie koledzy. Ja skupię się problemie poniższym.

Chcę odpalić skrypt/program i po rozłączeniu z sesją SSH chciałbym, żeby program dalej się wykonywał.

Można to zrobić na dwa sposoby:

Pierwszy (gorszy wg mnie) – wykorzystując polecenie “nohup”. Oto składnia:

nohup nazwa_komendy &

I to w sumie załatwia temat, ale…

Co zrobić gdybyśmy chcieli po pewnym momencie podłączyć się przez SSH jeszcze raz i zobaczyć jak program/skrypt się wykonuje?

Ja szczerze powiedziawszy nie wiem jak to zrobić korzystając z nohup, ale wiem jak zrobić to inaczej.

Wykorzystam do tego polecenie “screen”. Polecenie screen nie jest dostępne standardowo w Ubuntu, więc musimy je doinstalować

sudo apt-get -y install screen

Screen tworzy wirtualną sesję terminalową od której możemy się rozłączyć zostawiając ją działającą w tle i potem bez problemów podłączyć, żeby normalnie na niej pracować. Robimy to tak:
(najpierw tworzymy nową sesję)

screen -S nazwa_sesji

Odpalamy coś, co musi się długo wykonywać lub działać cały czas w tle

Wciskamy kombinację „CTRL+A”.

Wciskamy klawisz „D”.

I już się rozłączyliśmy z sesją, która spokojnie działa w tle, nawet po rozłączeniu sesji ssh. Żeby się podłączyć ponownie z takim terminalem wystarczy wpisać:

(żeby przypomnieć sobie nazwę wirtualnej sesji)

screen -ls

screen -R nazwa_sesji

To wszystko:-). Proste, trywialne, a jakże użyteczne dla Nooba Linuxowego.


Podobne Tematy:

  • dev-null

    Zeby zobaczyc jak się wykonuje program wykonany z nohup wystarczy sobie stailować loga tail -f nohup.out

  • Darek

    Warto też pamiętać o opcji screen -x nazwa_sesji, która umożliwia oderwanie podłączonej sesji z innego zdalnego komputera i podłączenie do tego, na którym aktualnie pracujemy.

  • Arnie

    Powyższe polecenia działają ale tylko w przypadku gdy programy wykonują się w terminalu. Co natomiast z programami ktróre wymagają środowiska graficznego (Xsów)? Jak wtedy zakończyć sesję SSH i nie przerwać działania programu a następnie się zalogować i móc zobaczyć wyniki?