bash: screen Komutu ve İpuçları (screen Command and Tips)

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

 

Kaynaklar: