GNU Screen nedir? Yenir mi?

Screen nedir? Screen tek bir terminal ekranı içerisinden içerisinde birden fazla terminal emülasyonu çalıştırmanızı sağlayan bir uygulamadır. Pencere çoklayıcısı olarak da bilinir.  Teminal üzerinden oluşturacağınız her bir terminal emülasyonu üzerinden farklı bir programı çalıştırabilirsiniz.

E bunun için tablı xterm ekranları var diyenler olabilir. tty üzerinden tabları görebilir misiniz derim ben de onlara. Ki screen sadece bir terminal emülasyonu çoklayıcı olmakla kalmayıp, açılan herhangi bir screen penceresi üzerinden çalıştırılan komutlar; o pencereyi kapatsanız da çalışmaya devam ederler. Kullanımının getirdiği avantajlar arasında nohup komutuna benzer yönler de var yani. Bu sayede, örneğin ssh’ la uzaktan bağlandığınız herhangi bir sunucuda başlattığınız uzun sürecek işlem sırasında screen penceresini kapatıp bağlantınızı güvenli bir şekilde koparabilirsiniz ve daha sonra tekrar screen’ in gerekli takılarını da kullanarak işlemlere kaldığınız yerden devam edebilirsiniz.

Screen’ i;

$ sudo apt-get install screen

komutuyla repository’ den indirip kolaylıkla kurabiliriz. Ardından;

$ screen

komutuyla çalıştırdığımızda bir hoşgeldiniz sayfasıyla karşılaşırız. Bu sayfa klasik GPL lisanslı programlarda gördüğümüz tipte bir sayfadır. Bu sayfayı uygulamanın bir sonraki kullanımlarından itibaren es geçmek için, screenrc (olabileceği yerler: ~/.screenrc/etc/screenrc) örnek konfigürasyon dosyasında;

startup_message off

satırının başındaki hash karakterini kaldırarak, konfigürasyona dahil etmeniz yeterli.

Eğer screen komutunu takısız çalıştırırsanız ilki 0 olarak numarandırılmak üzere, her yeni screen penceresi için birer artacak şekilde devam eder.  Bu açılan screen pencereleri arasında ^a n ile bir sonrakine, ^a p ile bir öncekine geçebilir ya da ^a (0-9) şeklinde doğrudan screen penceresinin numarası üzerinden gidebilirsiniz. Yeni bir screen penceresi açmak için ^a c kullanabilir, ^a “ ile açık pencereleri listeleyebilirsiniz.

^a d ile bağlı bulunduğunuz screen penceresinden ayrılabilirsiniz (detach). Bu komutla ayrıldığınız screen penceresinde çalışan bir uygulama varsa, çalışmaya devam edecektir ve

$ screen -ls

komutu ile açık screen pencerelerinin listelediğinizde, detached screenlerden biri olarak gözükecektir. Daha sonra örneğin listelenen screen pencereleri;

6210.theforth    (04/02/2012 11:41:24 PM)    (Attached)
6091.thethird    (04/02/2012 11:38:38 PM)    (Attached)
6035.thesecond    (04/02/2012 11:38:03 PM)    (Detached)

ise,

$ screen -r 6035.thesecond

komutu ile ayrıldığınız screen penceresine yeniden dönebilir, işinize kaldığınız yerden devam edebilirsiniz.

Screen ile yapılabileceklerden biri açtığınız screen pencerelerinden birini paylaşmaktır. Örneğin uzaktan bağlandığınız bir sunucuda, aynı screen penceresi üzerinden, on-site mühendis ile beraber çalışabilirsiniz.

Not: Bu yöntem güvenlik sorunu yaratabilir. Zaten bu sebeple de varsayılan dosya izinleriyle bu işlem yapılamaz, bu yüzden dosya sisteminde screenle ilgili bölümlerde kimi izinleri değiştirmeniz gerekmektedir. Örneğin en basitinden; screen penceresinin paylaşıldığı ikinci kullanıcı; oturumu açan kullanıcının dosya erişim izinlerini kullanarak normalde erişemediği dizinleri görüntüleyebilir. Bu sebeple pencerenin kiminle hangi durumda paylaşıldığı konusunda dikkatli olmakta fayda vardır.

Bu şekildeki bir ortak screen penceresinin kullanılabilmesi için;

$ sudo chmod u+s /usr/bin/screen

$ sudo chmod 755 /var/run/screen

Ardından bir screen penceresini;

$ screen -S <pencereismi>

şeklinde isimlendirerek açın. Ardından, screen penceresini paylaşıma açmak için, ^a :multiuser on komutunu kullanın. Ardından gerekli erişim iznini vermek için ^a :aclcfg <kullanıcıadı2> <permissions> komutunu kullanarak bağlantıyı paylaşacağınız ikinci kullanıcıyı ve bu kullanıcının screen dahilinde yapabileceklerini belirleyen izinleri verin. İzin takıları r, w, x olup başlarına  + koymanız durumunda izin verir, koymanız durumunda ise izinleri kaldırırsınız.

İkinci kullanıcının, paylaşılan screen penceresine bağlanabilmesi için, screen uygulamasının çalıştığı sunucuya bağlandıktan sonra;

$ screen -x <kullanıcıadı>/xxxx.<pencereismi>

komutunu kullanması gerekir. Burada, <kullanıcıadı>, screen uygulamasını başlatan kullanıcıdır,  xxxx ile belirtilen ise screen penceresinin oturum numarasıdır. Bağlanılan sunucuda

$ ls /var/run/screen/S-<kullanıcıadı>

komutu ile paylaşımı başlatan kullanıcının açtığı pencerelerin tam listesi görülebilir ve xxxx değerine ulaşılabilir.

Bu sayede paylaşılan  screen penceresinde, her iki kullanıcı da; ikinci kullanıcının sahip olduğu izinlere bağlı olarak, bir diğerinin yaptığını görebilir, komut yazabilir, uygulama çalıştırabilir.

Birden fazla screen penceresini aynı terminalden de çalıştırmak başvurulan yöntemlerden biridir. İkinci screen penceresini açtıktan sonra (^a c ile), ^a S komutu ile  screen uygulamasını çalıştırdığınız terminal ekranını iki pencereyi görüntüleyecek şekilde yatay olarak ikiye bölebilirsiniz. Altta kalan pencerede ilk etapta pencere listesi olabilir ya da açmış olduğunuz ikinci screen penceresi olabilir. Altta liste görünmesi durumunda doğal olarak altta görünmesini istediğiniz screen penceresini seçmeniz gerekecektir. İki pencere arasındaki geçişler ise ^a TAB  komutuyla yapılır. Örneğin top gibi sistem kaynaklarının durumunu gösteren bir pencereyi bir tarafta çalıştırırken diğer tarafta işinizi görebilirsiniz. Bu açıdan kullanışlı bir özelliği vardır. Bölünmüş yapıdan kurtulmak içinse, çalışmaya devam etmek istediğiniz tarafa geçtikten sonra, ^a Q komutunu kullanmanız yeterlidir.

Screen uygulaması ilk açıldığında açılmasını istediğiniz screen pencereleri varsa, bunları da yine screen konfigürasyon dosyasından ayarlayabilirsiniz. Bunlarla ilgili örnekler ise dosya içinde mevcut.

Screen’ in yapabildikleri tabi ki bunlarla kalmamakta. Komut satırından man sayfasına ulaşarak uygulamanın takılarını ve pencereler üzerinden verilebilen komutları görebilirsiniz.

WordPress.com ile böyle bir site tasarlayın
Başlayın