Screen Kullanımı

Başlatan ebubekirs, 26 Ocak 2011 - 13:01:00

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

ebubekirs

Screen, çok kullanışlı, zaman kazandıran ve aynı anda bir çok işlem yürütmeyi sağlayan bir programdır.

İlk bakışta terminal çoklayıcı gibi görünse de aslında tam anlamıyla bir oturum yöneticisidir. Terminalde yürüttüğünüz işleri birbirinden bağımsız olarak aynı anda yönetebilir, ekranlar arası geçiş yaparak işlemlerin ne durumda olduğunu görebilir ve sınırsız sayıda ekran açabilirsiniz.

Screen, başlattığınız işlemi arka plana atarak devam ettirebilmenizi sağlar. Terminali kapatsanız bile işlem arka planda çalışmaya devam eder. Bu bakımdan özellikle sunucu uygulamalarında çok kullanışlıdır.

Başka bir bilgisayara bağlanarak screen ile başlattığınız işlem, o bilgisayar ile bağlantınız kesilse bile devam edeceğinden, tekrar bağlandığınızda screen içerisinden işlemin ne durumda olduğunu görebilir ve müdahale edebilirsiniz.

Programın detaylarına bir göz atalım;

Eğer sisteminizde screen kurulu değilse, ki genelde kurulu olarak gelir;

sudo apt-get install screen

ile kurabilirsiniz.

screen

komutunu verdiğinizde karşınıza yeni bir terminal ekranı açılır. (İlk kullanımda bir bilgi ve ayar ekranı çıkması muhtemeldir)



Bu adımdan sonra gördüğünüz boş ekran, aslında yeni bir terminal ekranıdır. Bu ekranda istediğiniz komutları verip işlemlerinizi yürütebilirsiniz.

Şimdi bu ekranı arka plana atalım. Yani "detached" konumuna alalım. Bunun için Ctrl-a-d yapmamız yeterli. Ctrl-a tuş kombinasyonu screen'in komut başlangıcıdır. Bu kombinasyondan sonra basılan harf, asıl komutu ifade eder. Burada d harfi ile ekranı "detached" moduna almak istediğimizi belirttik.



Bilgisiyle birlikte bir ekranı arka plana attık. Başlattığımız işlem, o ekranda çalışmaya devam ediyor. Yeni bir ekran açalım

screen

Bu ekranı da arka plana alalım. Ctrl-a-d

Şimdi arka planda çalışan 2 ekranımız oldu. Çalışan ekranların listesini görmek için

screen -ls



2 ekranımız listelendi. Hangi ekrana tekrar bağlanmak istiyorsak o ekranın numarasını -r parametresi ile birlikte yazmamız yeterli

screen -r 2047

Eğer çalışan tek bir ekran varsa, numara belirtmeden -r parametresi ile girebiliriz. 

Burada bir parantez açalım. Screen kullanırken tek bir ekran içerisinde birden fazla pencere açabilirsiniz. Her bir pencere, içerisinde verdiğiniz komutları bir diğer pencereden bağımsız olarak yürütür. Pencereler arasında gezinti, metin kopyalama vb. işlemleri yapabilirsiniz. Ekran altında açılan pencereler "screen -ls" komutu ile ayrı olarak gözükmezler. Açıldıkları ekran içerisine bağlıdırlar. İlerleyen satırlarda bu konuya değineceğiz. 

Screen ile açtığımız ekranda komut işletip arka plana atmayı kısaca aşağıdaki şekilde de yapabiliriz ;

screen -dmS deneme du

burada dm parametresi ile ekranı çalıştırıp karşımıza getirmeden direkt arka plana attık (detach). S parametresi ile ekrana bir isim verdik. Bu şekilde "deneme" isminde, içinde "du" komutunu çalıştırdığımız bir ekranımız oldu. Şimdi listelediğimizde

screen -ls



Ekrana tekrar bağlanmak için numarası yerine artık ismini yazabiliriz;

screen -r deneme

Burada dikkat etmemiz gereken bir noktadan bahsedelim. Yukarıdaki gibi içerisinde çalıştıracağımız komutu belirterek screen başlattığımızda, komut işlemini tamamladığında pencere kapanır ve eğer başka açık pencere yoksa screen kapanır. Örneğin

screen -dmS cat /var/log/syslog

cat /var/log/syslog işlemi bittiğinde, yani tekrar komut satırına döndüğünde, pencere (eğer son pencere ise screen) kapanır.

Komut belirtmeden, isim belirterek boş bir ekranı arka planda çalıştırmak için;

screen -dmS deneme

deneme isminde boş bir ekran açıp arka plana gönderdik.

screen -r deneme

ile karşımıza getirebiliriz.

Screen'den bahsederken yine özellikle sunucular için çok kullanışlı, aynı zamanda ilgi çekici bir parametresinden bahsedelim. x parametresi ile aynı ekrana farklı yerlerden bağlanabilir, tek ekranı aynı anda farklı yerlerden kontrol edebilirsiniz. Örneğin bilgisayarınızda "deneme" isminde çalışan bir screen oturumu var. Cep telefonunuzdan ya da başka bir bilgisayardan ssh ile bilgisayarınıza bağlandınız;

screen -ls

dediğinizde deneme isminde çalışan bir ekran olduğunu gördünüz.

screen -x deneme

dediğinizde çalışan ekrana mevcut oturumu kesmeden bağlanmış olursunuz. Bağlandığınız cihazdan da, bağlantı yaptığınız bilgisayardan da aynı ekranı kontrol edebilirsiniz. Örneğin cep telefonunuzdan bilgisayar ekranına, aynı anda bilgisayar ekranında da görülebilecek şekilde komut girebilirsiniz. Tam tersi de mümkündür.


Biraz da screen içerisinde kullanılabilecek kısayollardan bahsedelim

Ekranlar içerisinde isteiğiniz kadar pencere açabilirsiniz demiştik. Pencere hangi ekranda iken açılmışsa o ekrana bağlanır ve yine o ekrandan erişilebilir. Bunu yapmak için Ctrl-a-c yapmanız yeterli. Açılan her pencere için bir numara verilir.

Açtığımız pencereler arasında geçiş yapmak için;

Ctrl-a-" Açılan pencerelerin listesini verir.



Ctrl-a-A Pencereye isim vermemizi sağlar



Ctrl-a-' Bağlanmak istediğiniz ekranın ismini ya da numarasını girmenizi ister.



Diğer kısayollar;

Ctrl-a-0           0 numaralı pencereye geçer
...
...     
Ctrl-a-12        12 numaralı pencereye geçer

Ctrl-a Ctrl-a    Bir önceki pencere ile mevcut pencere arasında geçiş yapar

Ctrl-a-C      Ekranı temizler. (clear komutu)

Ctrl-a-d      Oturumu "detach" eder (arka plana atar)

Ctrl-a h      Ekranı hardcopy.n isminde bir dosyaya yazar. Burada n pencere numarasıdır. Dosyayı /home klasörü altına kaydeder.

Ctrl-a H      Ekranı screenlog.n adı altında log dosyasına kaydetmeye başlar. Aynı tuş kombinasyonunu tekrar yaptığınızda log yazma işlemini bitirir. Burada n yine pencere numarasıdır ve dosya /home klasörü altına kaydedilir.

Ctrl-a k      Geçerli pencereyi kapatır.

Ctrl-a ?      Kısayolları görüntüler



Screen içerisindeki bir pencereye direkt bağlanmak için;

screen -r deneme -p 3
deneme ismindeki ekranın 3. penceresine direkt bağlanır. (3 yerine pencere ismi de yazabilirsiniz)

Screen kullanımı ile ilgili daha detaylı bilgiyi man screen sayfasından elde edebilirsiniz.

Dünyaya gelen de benim, dünyadan giden de benim

bytan

Çok güzel anlatım olmuş @ebubekir. Eline sağlık.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

ebubekirs

Teşekkür ederim @bytan. Umarım faydalı bir konu olmuştur.
Dünyaya gelen de benim, dünyadan giden de benim

heartsmagic

Eline sağlık @ebubekirs, aslında uzun zamandır aklımda olan bir konuydu. SUDO için çok tembellik ettim, foruma kısmetmiş :)
Bir iki ekleme yapayım ben de.

Screen ile çalıştığımız ekranı bölebiliriz (aşağıdaki resimde görülebilir).
Bölmek için Ctrl + S kullanmalıyız. S harfinin büyük olması gerekmekte zira büyük küçük harf hassasiyeti mevcut screen'de.
Bölünen kısma geçmek için Ctrl + TAB kullanmalıyız.
Ardından bölünün bu yeni kısımda yeni bir kabuk açmak için Ctrl + c kullanmalıyız. 
Bu aşamadan sonra bu iki kabukta birbirinden bağımsız bir şekilde çalışabilir, kabuklar arasında Ctrl+TAB ile dolaşabiliriz.
(İkiden fazla pencereye de bölebilirsiniz screen pencerenizi)

Olur da komut çıktıları arasından bir şey kopyalamak istersek ve bu istediğimiz kısım yukarılarda kalmışsa kopyalama için klasik klavye işlevlerini kullanamayız screen'de. Shift+PageUp çalışmaz kısacası. Bunun için screen üzerinde kopyalama kipini kullanmalıyız.
Ctrl + [ ile kopyalama kipine geçtikten sonra kopyalayacağımız satıra kadar klavye ile gidip, ardından Enter tuşuna basıp, kopyalamak istediğiniz kısmı kopyalayalım. Ardından tekrar Enter tuşuna basalım. Yapıştırmak içinse Ctrl + ] kısayollarını kullanalım.



Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ebubekirs

Ekleme için teşekkürler @heartsmagic. Sırada zsh var ama onu da seneye anca bitiririm :)
Dünyaya gelen de benim, dünyadan giden de benim