Linux İşlemlerinde Sorun Giderme için Strace Komutları

Sorumluluğumuz altında Linux işletim sistemli makinelerimiz olduğunda, bunların her yönünü doğru şekilde yönetmenin en kullanışlı ve pratik yollarından biri, bunları dağıtmak ve desteklemek için var olan farklı yardımcı programları ve komutları bilmektir.

Bu sefer Solvetic, strace adlı bir komut satırı yardımcı programından bahsedecek ve işletim sistemi yönetimi için nasıl pratik hale getirilebileceğini göreceğiz.

strace nedirstrace, hata ayıklama görevlerini teşhis etmek, talimat vermek ve çalıştırmak için kullanışlı bir komut satırı aracıdır. Sistem yöneticileri, izleme için yeniden derlenmeleri gerekmediğinden, kaynağı bulunmayan programlarla ilgili sorunları çözmek için strace'i pratik bir araç olarak görürler.
strace aracı, bir süreç tarafından yapılan tüm sistem çağrılarını ve süreç tarafından alınan sinyalleri yakalar ve kaydeder, strace, her sistem çağrısının adını, argümanları ile birlikte parantez içinde ve isteğe bağlı olarak standart hataya dönüş değerini görüntülemekle sorumludur, bir dosyaya yönlendirmek mümkün olacaktır.

1. Strace kurulumu


strace yüklemek için aşağıdaki komutlardan birini uygulamamız gerekir:
 sudo apt kurulum yolu (Debian veya Ubuntu) yum kurulum yolu (RedHat veya CentOS) dnf kurulum yolu (Fedora)
Bir programın çökmesi veya beklenmedik bir şekilde davranması durumunda, yürütülmesi sırasında tam olarak ne olduğu hakkında bir fikir edinmek için sistem çağrılarına erişmek mümkün olacaktır.

Sistem çağrıları farklı olaylara ayrılabilir: süreç yönetimi ile ilgili olanlar, bir dosyayı argüman olarak alanlar, ağlar, bellek tahsisi, sinyaller, IPC içerenler ve ayrıca dosya tanımlayıcılarla ilgili sistem çağrıları.

2. strace komutlarıyla Linux'ta işlem sorunları nasıl giderilir


Daha sonra Linux'ta ortaya çıkabilecek farklı süreç problemlerini çözmek için farklı strace komutları göreceğiz.

strace ile sistem çağrılarını takip edinBu seçenek, df komutu tarafından yapılan tüm sistem çağrılarını izlememizi sağlar, bunun için aşağıdakileri uygularız:

 strace df -h

Bu çıktıda, df komutu tarafından yapılan çeşitli sistem çağrılarını görebiliriz, örneğin bunlardan biri:

 open ("/ etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Neresi:
  • Açık: Sistem çağrısı türüdür.
  • Bu sistem çağrısının argümanıdır: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Sistem çağrısının dönüş değeridir.

Linux PID süreçlerini takip edinSistemde halihazırda bir işlem çalışıyorsa, PID'si aracılığıyla aşağıdaki gibi takip etmek mümkün olacaktır:

 sudo strace -c -p 465
Bu işlem tarafından sistem çağrılarının yapıldığını gösteren sürekli çıktı ile ekranı dolduracak, bitirmek için Ctrl + C tuşlarına basacağız.

Bir Linux sürecinin özetini alın-c parametresini kullanarak, her sistem çağrısı için toplam süre, çağrılar ve hatalar hakkında bir rapor oluşturmak mümkün olacaktır, bunun için aşağıdaki sözdizimini uygulayacağız:

 sudo strace -c -p (PID)

Sistem çağrısı sırasında talimat işaretçisini yazdırın. -i seçeneği, program tarafından yapılan her sistem çağrısı sırasında talimat işaretçisini görüntüler.

 sudo strace -i df -h

Her iz çıktı satırı için günün saatini gösterstrace ile, -t bayrağını kullanarak izleme çıktısındaki her satır için günün saatini yazdırmak mümkündür:

 sudo strace -t df -h

Sistem çağrılarında harcanan yazdırma süresini görüntüleyinBir program tarafından yapılan her sistem çağrısının başlangıcı ve bitişi arasındaki zaman farkını göstermek için -T seçeneğini kullanmalıyız:

 sudo strace -T df -h

Belirli aramaları takip edintrace = write komutu nitelikli bir ifade olarak bilinir, burada trace bir niteleyicidir (diğerleri sinyal, kısaltma, ayrıntılı, ham, okuma veya yazma içerir) Bu durumda niteleyicinin değerini yazarsınız. Aşağıdaki komut, sistemin df çıktısını standart çıktıya yazdırmak için çağırdığı gerçek zamanlı olarak görüntüler:

 sudo strace -e izleme = df -h yaz

Kullanabileceğimiz bazı ek komutlar şunlardır:

 sudo strace -e iz = aç, kapat df -hsudo strace -e iz = aç, kapat, oku, yaz df -hsudo strace -e iz = tümü df -h

Bir koşula göre sistem çağrılarını çizinBu komut, süreç yönetimini içeren tüm sistem çağrılarını izlemek için kullanılabilir, aşağıdakileri uygulayacağız:

 sudo strace -q -e izleme = süreç df -h

Şimdi, argüman olarak bir dosya adı alan tüm sistem çağrılarını izlemek için aşağıdaki komutu çalıştıracağız:

 sudo strace -q -e izleme = dosya df -h

Bellek ayırmayı içeren tüm sistem çağrılarını izlemek için aşağıdaki satırı uygulayacağız:

 sudo strace -q -e izleme = bellek df -h

İzi çıktı dosyasına yönlendirStandart bir hataya gönderilen takip mesajlarını bir dosyaya yazmak istiyorsak -o seçeneğini kullanacağız. Bu, ekrana yalnızca komut çıktısının aşağıdaki gibi yazdırıldığı anlamına gelir:

 sudo strace -o df_debug.txt df -h

Bu dosyayı şu satırı çalıştırarak görselleştirebiliriz:

 kedi df_debug.txt

strace hata ayıklama çıktısını dağıtstrace aracı için hata ayıklama bilgilerini görüntülemek istiyorsak, -d bayrağını kullanmalıyız:

 strace -d df -h

Yardımstrace komutunun yardımını görüntülemek için aşağıdaki satırı uygulayacağız:

 adam izi

Bu şekilde, strace'in Linux dağıtımlarında yönetim görevleri için nasıl bir yardımcı olduğunu gördük.

wave wave wave wave wave