Linux'ta Süreçlerin Zaman ve Bellek Kullanımı Nasıl Sınırlandırılır
zaman aşımı komut dosyası, Linux'taki işlemlerin zamanını ve bellek tüketimini sınırlamak için kullanışlı bir kaynak izleme programıdır. Programları kontrol altında çalıştırmanıza, zaman ve hafıza sınırlarını zorlamanıza, bu parametrelerin ihlali durumunda programı sonlandırmanıza olanak tanır.
Kurulum gerektirmez, sadece timeout programını kullanarak bir komutu argümanlarıyla birlikte yürütün; komutun hafızasını ve zaman tüketimini izleyecek, sınırların dışına çıkması durumunda süreci kesintiye uğratacak ve önceden tanımlanan süreyi size bildirecektir. İleti.
Bu betiği çalıştırmak için Linux sisteminizde Perl 5'in kurulu olması ve /proc dosya sisteminin kurulu olması gerekir.
Linux sisteminizde Perl'in yüklü sürümünü kontrol etmek için aşağıdaki komutu çalıştırın.
perl -v
Daha sonra, git komutunu kullanarak timeout deposunu sisteminize kopyalayın, ardından cd komutunu kullanarak yerel depoya gidin ve onu normal bir Linux komutu olarak çağırın.
cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout
Şimdi timeout komut dosyasının nasıl çalıştığına bakalım.
Temel Bellek Sınırlaması (100M Sanal Bellek):
Bu ilk örnek, -m
bayrağını kullanarak bir işlemin bellek kullanımının 100M sanal bellekle nasıl sınırlandırılacağını gösterir. Bellek için varsayılan birim kilobayt cinsindendir.
Burada, stress-ng komutu, 10 dakika boyunca kullanılabilir belleğin %40'ını kullanacak şekilde bir araya getirilen 4 sanal bellek stres etkenini (VMS) çalıştırır. Dolayısıyla her stres etkeni mevcut belleğin %10'unu kullanır.
./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Yukarıdaki zaman aşımı komutunun çıktısı göz önüne alındığında, stres veren çalışan süreçleri yalnızca 1,16 saniye sonra sonlandırıldı. Bunun nedeni, VMS'in birleşik bellek tüketiminin (438660 kilobayt), stres-ng ve alt öğesi için izin verilen sanal bellek kullanımından daha fazla olmasıdır. süreçler.
Sürecin Temel Zaman Sınırlaması:
İşlemin zaman sınırlamasını etkinleştirmek için gösterildiği gibi -t
işaretini kullanın.
./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Yukarıdaki örnekte stresleme CPU+SYS süresi tanımlanan 4 değerini aştığında, çalışan işlemler sonlandırılır.
Sürecin Hem Zamanını hem de Hafızasını Sınırlamak
Ayrıca aşağıdaki gibi hem belleği hem de zamanı aynı anda sınırlayabilirsiniz.
./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Zaman aşımı ayrıca, takılma tespitine olanak tanıyan --detect-hangups
gibi bazı gelişmiş seçenekleri de destekler.
./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
RSS (yerleşik küme boyutu) bellek sınırını --memlimit-rss
veya -s
anahtarını kullanarak izleyebilirsiniz .
./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Ayrıca, bir işlemin çıkış kodunu veya sinyal+128'ini döndürmek için gösterildiği gibi --confess
veya -c
seçeneğini kullanın.
./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Daha fazla bilgi ve kullanım örneği için timeout Github deposuna bakın: https://github.com/pshved/timeout.
Aşağıdaki ilgili makaleleri de aynı derecede faydalı bulabilirsiniz:
- Toplu Modda 'top' ile Bellek Kullanımına Göre İlk 15 İşlem Nasıl Bulunur?
- CPUTool – Linux'ta Herhangi Bir İşlemin CPU Kullanımını Sınırlayın ve Kontrol Edin
- CPULimit Aracıyla Linux'ta Bir İşlemin CPU Kullanımı Nasıl Sınırlandırılır
Zaman aşımı komut dosyası, esas olarak Linux'taki işlemlerin zamanını ve bellek tüketimini kısıtlayan basit bir kaynak izleme programıdır. Aşağıdaki yorum formunu kullanarak bize zaman aşımı komut dosyasıyla ilgili geri bildirimde bulunabilirsiniz.