Nedir, ne işe yarar bu screen komutu?
Tek bir terminal penceresi kullanarak birden fazla işlem yapmak (komut işletmek) isteyebilirsiniz. Örneğin ssh ile bir makineye bağlandınız ve aynı ssh oturum ile (farklı bir terminal ile tekrar ssh bağlantısı oluşturmadan) aynı anda birden fazla işlem yapmak istiyorsanız (örneğin bir yandan bir betik çalıştırıp bunun stdout’unu bir dosyaya yönlendirdiniz, bunun bitmesini beklerken bir yandan da tailf ile bu dosyanı izlemek gibi) screen bu işimizi fazlasıyla görecektir. Can alıcı daha güzel bir özelliği de terminal’den kopsanız/çıksanız bile screen ile açtığınız oturum devam edebilir. Bu güzel özellik ne zaman işimize yarayabilir? Örneğin gün ssh ile bir sunucuya bağlandınız ve yaklaşık 2 gün sürecek, ön-tarafta (background job olarak değil) yapılan işlerini izlemek istediğiniz betik çalıştırmak istiyorsunuz ve aynı zamanda başka işlerde yapmak istiyorsunuz. Normalde ssh bağlantınız koptuğunda bu betiğin çalışması da duracaktır ve diğer işlerde gidecektir. Bu işler bir screen oturumunda yapılmış olsaydı bahsedilen işleri aynı ayda hepsini yapabilirdiniz ve hatta bu ekranları olduğu gibi bırakıp ssh bağlantısını kopartıp tekrar girdiğinizde ekranları açık ve işlemleri devam eder bir şekilde bulabilirsiniz.
Kurulum
sudo apt-get install screen
Kullanım
screen [options]
Bazı parametre kullanımları:
- screen –ls: screen oturumlarını listeler
- screen –r: var olan screen oturumuna bağlanır
- screen –r oturum-id: oturum listesinden oturum-id’li screen oturumuna bağlanır
- screen –dR: açık screen oturumu varsa bağlanır; yoksa yeni oturum başlatır
- screen -S oturum-id -X quit: oturum-id’li screen oturumunu sonlandırır
screen komutları
screen komutları screen oturumunda iken uygulanır. Her komut Ctrl-a ile başlar. Aşağıdaki komutlardan önce de Ctrl-a tuşlarına basılmalı.
Komutlar:
- c: yeni pencere yaratır
- a: son iki pencere arasında geçiş yapar
- n: sonraki pencereye geçer
- p: bir önceki pencereye geçer
- N: N numaralı pencereye geçer
- “: etkileşimli pencere listesi gösterir
- w: etkileşimsiz pencere listesi gösterir
- A: pencereye isim vermek için kullanılır
- K: mevcut pencereyi sonlandırır
- d: screen oturumundan bağlantıyı keser (d: detach, * oturum devam eder)
- r: bağlantısı kesilmiş (sonlandırılmamış) screen oturumuna bağlanır (r: reattach)
- [: kopya modu (scrollback buffer)
- ]: kopyalanan metni yapıştırır (scrollback buffer)
- :password: screen oturumuna parola koyar
- :password none: parola korumalı screen oturumundan paroları kaldırır (password komutu verildikten sonra none yazılmalı)
- :sessionname name: oturum adını isimlendirmeye yarar (* aynı makinede birden fazla screen ile çalışılıyorsa oturumu isimlendirmek çok faydalı oluyor)
- :quit: screen oturumunu sonlandırır
- :number N: mevcut screen penceresini numaralandırır
Açılış mesajını kapatma
/etc/screenrc’deki aşağıdaki satır açılmalı:
startup_message off
screen pencerelerinde hardstatus bar’ı çıkarma
/etc/screenrc’ye aşağıdaki satırlar eklenmeli:
hardstatus off hardstatus alwayslastline hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W} %c %{g}]'
screen oturumunu sonlandırma
shell’den ve screen oturumu içinden olmak üzere 2 yöntem ile screen oturumu sonlandırılabilir.
1. yöntem ile (shell):
screen -ls There is a screen on: 7991.pts-4.opsy (11/29/2013 09:20:00 AM) (Detached) 1 Socket in /var/run/screen/S-erman. screen -S 7991 -X quit screen -ls No Sockets found in /var/run/screen/S-erman.
2. yöntem ile (screen oturumunda iken):
Ctrl-a :quit
Açık kalmış (attached) oturuma bağlanma
screen -dr 1111