1.                        

13-) Sıfırdan Temel Linux Eğitimi [Süreçler - Süreç İşlemleri]

'Dökümanlar' forumunda Al-Farabi tarafından 8 Temmuz 2018 tarihinde açılan konu

  1. Al-Farabi

    Al-Farabi Albay

    Katılım:
    16 Ocak 2016
    Mesaj:
    1,324
    Beğeniler:
    103
    Ödül Puanları:
    63
    Süreçler(process)
    Süreç(process) denilen kavram genel olarak bir program çalıştığında programın belleğe yüklenmesine denir. Bizler de bu bölümde süreçler hakkında bilgi almak, işlem yapmak ve gerektiğinde müdahalede bulunmak gibi işlemleri yapabilmek adına ilgili komutları öğreneceğiz.

    ps
    Bu komutumuz çalışan süreçleri görüntülememizi sağlıyor.

    Komut tek başına ps şeklinde kullanıldığında mevcut konsol üzerinden çalıştırılmış süreçleri verir.

    [​IMG]

    Genellikle sistemdeki tüm işlemleri görmek için ps -aux komut bütünü kullanıyor. Komut aux parametreleri ile ps -auxşeklinde kullanıldığında sistemde ve terminallerde çalışan tüm süreçleri ve süreç sahiplerini gösteriyor.(Çıktı çok uzun olacağından aradaki çıktıları atlayarak kısa çıktıları aşağıdaki şekilde verdim.)

    [​IMG]

    Ancak gerektiği zaman doğru çıktıları almak adına ps komutunun parametrelerine bakalım.

    e : Sistemde çalışan her süreç.(Çıktı çok uzun olacağından aradaki çıktıları atlayarak kısa çıktıları aşağıdaki şekilde verdim.)

    [​IMG]

    u : Kullanıcı adına göre süreç bilgileri verir.

    Parametrenin komut ile kullanımı ps -u kullanıcı şeklindedir.

    [​IMG]

    p : Süreç numarasına(PID) göre süreç bilgisi verir.

    [​IMG]

    Eğer aradığımız özel bir süreç varsa daha önce görmüş olduğumuz grep komutu yardımı ile o süreç hakkında doğrudan bilgi alabiliriz. Şöyleki eğer ben "bash" süreci hakkında bilgi almak istiyorsam konsola ps -aux | grep "bash" yazmam yeterli olacaktır.

    [​IMG]

    Çıktıda görüldüğü gibi yalnızca ulaşmak istediğim "bash" süreci hakkında çıktı almış oldum.

    pstree
    Süreçleri hiyerarşik bir biçimde görüntülemek istersek pstree komutumuzu da kullanabiliriz. Bu komut Windows işletim sisteminde de tree olarak kullanılabiliyor. Neyden bahsettiğimizi anlamak için hemen konsola pstree komutumuzu verelim.

    [​IMG]

    Komutumuz isminde(pstree) de yer aldığı gibi, süreçleri tıpkı bir ağaç gibi dallanıp budaklanarak hiyerarşik şekilde karşımıza getiriyor.

    top
    Bu komut da tıpkı ps komutunda olduğu gibi süreçler hakkında bilgi verir ancak bu işlemi ps komutundan farklı olarak 3 saniyede bir yenilenecek şekilde anlık değişimleri verecek şekilde yapar. Temel kullanımı top şeklindedir.

    [​IMG]

    Eğer varsayılan olarak kullanılan 3 saniyede bir güncelleme tekrarında bir değişiklik yapmak istersek komutumuzu dparametresiyle birlikte yani top -d saniye şeklinde yazarak istediğimiz saniye aralığında süreç bilgilerinin çıktılarının güncellenmesini sağlayabiliriz. Ben örnek olması açısından bu yenileme hızını 1 saniye olarak ayarlamak için komutumu top -d 1 şeklinde yazıyorum. Ve ayrıca bu ekranı kapatmak istesek ise sadece q tuşuna basmamız yeterli. Gif resminde de görüldüğü gibi top -d 1 komutu ile her saniye yenilenen süreçler bilgi tablosu q tuşuna basmamızla sonlanmış oldu.

    [​IMG]
    pgrep
    Çalışan süreçlerin belirli kriterlere göre sıralanmasını sağlayan komuttur.

    Süreç işlemlerinde çalışan süreç üzerinde değişiklik yapabilmemiz için ilk önce değişiklik yapacağımız süreci bulmamız gerekiyor. İşte pgrep komutu da bizlere lazım olan çalışan süreç numaralarını(pid) veriyor. Süreç numarası sistemde süreçlerin haberleşmesini sağlayan numaradır ve tüm süreçler için benzersiz olacak şekilde atanır. Buraya takılmadan devam edelim.

    [​IMG]

    Örnek vererek komutumuzun kullanımını görmüş olalım.

    Örnek göstermek adına armitage aracını çalıştırıyorum. Çalışmakta olan armitage aracının süreci üzerinden örneğimizi yapalım. Çalıştırmış olduğumuz amitage aracının süreç numaralarını(procces id(pid)) sorgulamak üzere pgrep armitagekomutumuzu giriyoruz.

    [​IMG]

    Ve çıktı da görüldüğü gibi pgrep armitage komutu sayesinde armitage aracının süreç numaralarını(pid) görmüş olduk.

    Şimdi de pgrep komutunun birkaç işlevsel parametresini görelim.

    l : Süreçlerin numaraları ile beraber süreç isimlerini de görmek için kullanılır.

    [​IMG]

    lu : Belirtilen kullanıcıdaki, süreçlerin numaraları ile beraber süreç isimlerini de görmek için kullanılır. Burada u parametresi hedef kullanıcı belirtmemizi sağlar l parametresini zaten bir önceki kısımda açıklamıştık.

    [​IMG]

    İleride bu bilgiler bize lazım olacak şimdi süreçleri sonlandırma komutları ile devam edelim.
     
    MrX bunu beğendi.
  2. Al-Farabi

    Al-Farabi Albay

    Katılım:
    16 Ocak 2016
    Mesaj:
    1,324
    Beğeniler:
    103
    Ödül Puanları:
    63
    kill-killall
    Komutlarımız isimlerinden de anlaşılabileceği gibi süreçleri sonlandırma(öldürme) işleminde kulllanılıyorlar. Kullanım şekilleri;

    kill süreç_numarası(pid) : Süreçleri pid(süreç numarası) ile sonlandırmak.

    [​IMG]

    kill -9 süreç_numarası(pid) : Kapanmaya karşı direnen süreçleri pid(süreç numarası) ile sonlandırmak.

    [​IMG]

    killall süreç_ismi : Süreçleri isimleri ile sonlandırmak.

    [​IMG]

    killall -9 süreç_ismi : Kapanmaya karşı direnen süreçleri isimleri ile sonlandırmak.

    [​IMG]

    killall -i süreç_ismi : Süreçleri isimlerini kullanarak ve onay alarak sonlandırmak.

    [​IMG]

    xkill
    Bu komutumuz yanıt vermeyen bir programı grafiksel arayüzden kapatmamızı sağlayan ilginç bir komuttur.

    Diyelim ki leafpad aracımızı açtık ve her ne sebeple olursa olsun yanıt vermeyi kesti, bu noktada eğer leafpad aracını anında kapatmak istersek konsola xkill yazıyoruz ve fare imleci çarpı işaretine dönüşüyor. Bu çarpı işareti ile tıkladığımız araç otomatik olarak kapanıyor.

    [​IMG]

    Anlatım havada kalmış olabilir o yüzden xkill komutunun kullanımını kesinlikle sizler de hemen deneyin akılda kalması kolay bir komut zaten.

    fg-bg-jobs
    Son olarak gayet kullanışlı komutlar olan fg ve bg komutlarına değinerek süreçler konumuzu bitirelim. Konsoldan komut verildiğinde, verdiğimiz komut doğrultusunda gerçekleşen işlem süreci bitmeden konsoldan tekrar başka bir komut vermemiz mümkün olmuyor. Bu gibi durumlarda eğer yeni bir komut girişi yapmak istersek, süreci arka plana alıp yeni komutumuzu ancak öyle çalıştırabiliriz. İşte bu komutlarımız da konsoldan çalıştırdığımız süreçleri arka plana taşıma gibi işleve sahiptirler. Ayrıca jobs komutu da bu süreçlerin durumunu takip etmemizi sağlar. Bu durum örnekler ile daha iyi anlaşılacaktır.

    Kullanımın rahat şekilde anlaşılması için adım adım gidelim.

    Konsoldan leafpad uygulamasını açalım. Bunun için konsola leafpad yazmamız yeterli.

    Yazdıktan sonra ekrana leafpad uygulaması geldi.

    [​IMG]

    Programı çalıştırdığımız konsol şu anda leafpad uygulamasını çalıştırmakla meşgul. Yani bu demek oluyor ki eğer biz bu konsol üzerinden yeni bir komut girmek istersek bu mümkün olmayacak. İşte bu yüzden halihazırda çalışan leafpad uygulamasının çalışmasını durdurup arka plana atmalıyız ki yeni komutlar girdiğimizde konsol leafpad uygulaması ile meşgul olmasın.

    Konsolda çalışan leafpad uygulamamızı arka plana atmak yani duraklatmak için Ctrl + Z tuş kombinasyonunu kullanıyoruz. Bu işlemin ardından konsol bize aşağıdaki gibi bir çıktı basarak leafpad uygulamasının durduğunu haber veriyor.

    [​IMG]

    Konsolun bize leafpad programının durduğunu haber verdiğini söylemiştik. Ayırca bu gibi durumlarda sürecin durumunu sorgulama yapmak için jobs komutunu da kullanabiliyoruz.

    [​IMG]

    Artık leafpad programımızın durdurulduğundan kesin eminiz. Hatta leafpad uygulamasına grafiksel arayüzden bir şeyler yazmaya çalıştığımızda uygulama durdurulduğu için hiç bir tepki vermiyor. Yani konsolumuz artık leafpad uygulamasının sürecini işlemiyor. Bunu teyit etmek için önceden konsola komut veremediğimizi ele alırsak denemek için konsola lskomutumuzu giriyoruz. Adımların her birini genel olarak .gif olarak verdiğim resimde görebilirsiniz.

    [​IMG]

    ls komutunun çıktısını alabildik bu da demek oluyor ki konsol ekranımız önceden olduğu gibi leafpad uygulaması ile meşgul değil, böylelikle yeni komutlar alabiliyor.

    Leafpad programı durduruldu ancak biz hem leafpad programını kullanmak hem de aynı konsol ekranından yeni komutlar girebilmek istiyoruz. İşte bu noktada durdurulan leafpad süreçlerinin arka plana alınarak çalıştırılmasına devam edilmesi gerekiyor. Bu işlevi de bg komutu sağlıyor. Komut satırımıza bg komutumuzu girdiğimizde artık leafpad programı süreçleri arka planda çalışır duruma geçiyor ve biz hem konsol ekranından yeni komutlar girebiliyoruz hem de leafpad uygulamamızı kullanabiliyoruz. Leafpad uygulamasının çalışır olduğunu jobs komutu ile de aşağıdaki şekilde teyit edebiliriz.

    [​IMG]

    Eğer arka plana attığımız program sürecini tekrar eskisi gibi konsol üzerinden(ön planda) çalışır hale getirmek istersek fgkomutumuzu kullanabiliriz. Bu komutumuzu kullandığımızda konsol artık yeni komut almayacak ve tekrar sadece leafpad uygulaması ile meşgul olacak.

    Yukarıda verilen .gif ile bu durumlar ele alınmıştır.


    Dokümantasyon Kaynağı
    [​IMG]
    Her türlü soru, öneri veya görüşleriniz için bana bu adresten geri bildirimde bulunabilirsiniz.

    Videolu eğitimi incelemek için buraya tıklayın.
     
    MrX bunu beğendi.

Bu Sayfayı Paylaş

Share