Bir Linux Komutunu Her X Saniyede Bir Sonsuza Kadar Çalıştırma veya Tekrarlama


Bir sistem yöneticisinin genellikle bir komutu belirli bir süre içinde tekrar tekrar çalıştırması gerekir. Çoğu zaman bu tür görevler basit cron komutlarıyla kolayca tamamlanabilir. Çoğu durumda bu işe yarayacaktır, ancak cron komutunu çalıştırabileceğiniz en kısa süre her 1 dakikadır. İster inanın ister inanmayın, çoğu durumda bu çok yavaştır.

Bu eğiticide, varsayılan olarak her 3 saniyede bir üst komuta (işlemi ve bellek kullanımını sürekli olarak izleme) benzer şekilde, sürekli çalışan durumda belirli bir komutu izlemek veya ona göz kulak olmak için basit komut dosyası oluşturma tekniklerini öğreneceksiniz.

Komutları neden bu kadar sık çalıştırmanız gerektiğinin nedenlerini tartışmak için durmayacağız. Herkesin günlük işlerinde, hatta evdeki PC ve dizüstü bilgisayarlarında bunun için farklı nedenleri olduğuna inanıyorum.

1. Saat Komutunu Kullanın

İzle, bir komutu veya programı düzenli aralıklarla yürütmenize olanak tanıyan ve ayrıca çıktınızı ekranda gösteren bir Linux komutudur. Bu, program çıktısını zamanla görebileceğiniz anlamına gelir. Varsayılan olarak saat, komutu/programı her 2 saniyede bir yeniden çalıştırır. Aralık, gereksinimlerinizi karşılayacak şekilde kolayca değiştirilebilir.

Bellek Kullanımını İzleme

“İzle”nin kullanımı son derece kolaydır; test etmek için hemen bir Linux terminalini çalıştırabilir ve aşağıdaki komutu yazabilirsiniz:

watch free -m

Yukarıdaki komut, sisteminizin boş belleğini kontrol edecek ve serbest komutun sonuçlarını her iki saniyede bir güncelleyecektir.

Yukarıdaki çıktıya göre görüldüğü gibi, (soldan sağa) güncelleme aralığı, yürütülen komut ve geçerli saat hakkındaki bilgileri görüntüleyen bir başlığınız vardır. Bu başlığı gizlemek isterseniz -t seçeneğini kullanabilirsiniz.

Bir sonraki mantıksal soru, yürütme aralığının nasıl değiştirileceğidir. Bu amaçla, komutun yürütüleceği aralığı belirten -n seçeneğini kullanabilirsiniz. Bu aralık saniye cinsinden belirtilir. Diyelim ki script.sh dosyanızı her 10 saniyede bir çalıştırmak istiyorsunuz, bunu şu şekilde yapabilirsiniz:

watch -n 10 script.sh

Komutu yukarıda gösterildiği gibi çalıştırırsanız, dizine cd yapmanız gerekeceğini unutmayın (Lear 15 cd Komut Örneklerini öğrenin). betiğin bulunduğu yeri belirtin veya başka bir şekilde söz konusu betiğin tam yolunu belirtin.

Watch komutunun diğer yararlı seçenekleri şunlardır:

  1. -b – komutun çıkışı sıfır değilse bir bip sesi oluşturur.
  2. -c – ANSI renk dizilerini yorumlar.
  3. -d – komut çıkışındaki değişiklikleri vurgular.

Oturum Açmış Kullanıcıları, Çalışma Süresini ve Yük Ortalamasını İzleyin

Diyelim ki oturum açmış kullanıcıları, sunucu çalışma süresini ve yük ortalama çıktısını birkaç saniyede bir sürekli aşamada izlemek istiyorsunuz, ardından gösterildiği gibi aşağıdaki komutu kullanın:

watch uptime

Komuttan çıkmak için CTRL+C tuşlarına basın.

Burada 'uptime' komutu varsayılan olarak her 2 saniyede bir çalışacak ve güncellenen sonuçları görüntüleyecektir.

Kopyalama Komutunun İlerlemesini İzleme

Linux'ta cp komutunu kullanarak dosyaları bir yerden diğerine kopyalarken verinin ilerleme durumu gösterilmez, kopyalanan verinin ilerlemesini görmek için watch komutunu kullanabilirsiniz. > Disk kullanımını gerçek zamanlı olarak kontrol etmek için du -s komutuyla birlikte komut verin.

cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Yukarıdaki işlemin gerçekleştirilemeyecek kadar karmaşık olduğunu düşünüyorsanız, kopyalama sırasında verilerin ilerlemesini gösteren Gelişmiş kopyalama komutunu kullanmanızı öneririm.

2. Uyku Komutunu kullanın

Uyku genellikle kabuk komut dosyalarının hatalarını ayıklamak için kullanılır, ancak başka birçok yararlı amacı da vardır. Örneğin, for veya while döngüleriyle birleştirildiğinde oldukça harika sonuçlar elde edebilirsiniz.

Bash komut dosyası oluşturma konusunda yeniyseniz, bash döngüleri hakkındaki kılavuzumuza buradan göz atabilirsiniz.

"sleep" komutunu ilk kez duyuyorsanız, bu komut bir şeyi belirli bir süre geciktirmek için kullanılır. Komut dosyalarında, komut dosyanıza komut 1'i çalıştırmasını, 10 saniye beklemesini ve ardından komut 2'yi çalıştırmasını söylemek için bunu kullanabilirsiniz.

Yukarıdaki döngülerle bash'a bir komut çalıştırmasını, N saniye kadar uyumasını ve ardından komutu tekrar çalıştırmasını söyleyebilirsiniz.

Aşağıda her iki döngünün örneklerini görebilirsiniz:

for döngüsü Örneği

for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Yukarıdaki satır, yankı komutunu çalıştıracak ve yürütmeler arasında 5 saniyelik uyku süresiyle toplam 10 kez geçerli tarihi görüntüleyecektir.

İşte örnek bir çıktı:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Echo ve date komutlarını kendi komutlarınız veya komut dosyalarınız ile değiştirebilir, uyku aralığını ihtiyaçlarınıza göre değiştirebilirsiniz.

while döngüsü örneği

while true; do echo -n "This is a test of while loop";date ; sleep 5; done

İşte örnek çıktı:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Yukarıdaki komut, kullanıcı tarafından sonlandırılana veya kesintiye uğrayana kadar çalışacaktır. Arka planda çalışan bir komutu çalıştırmanız gerekiyorsa ve cron'a güvenmek istemiyorsanız kullanışlı olabilir.

Önemli: Yukarıdaki yöntemleri kullanırken, bir sonraki yürütmeden önce komutunuzun çalışmayı bitirmesi için yeterli süreyi sağlayacak kadar uzun bir aralık ayarlamanız önemle tavsiye edilir.

Çözüm

Bu eğitimdeki örnekler faydalıdır ancak cron yardımcı programının tamamen yerini alması amaçlanmamıştır. Hangisinin işinize daha çok yaradığını bulmak size kalmış ama her iki tekniğin kullanımını ayırmak gerekirse şunu söyleyebilirim:

  1. Sistem yeniden başlatıldıktan sonra bile komutları düzenli aralıklarla çalıştırmanız gerektiğinde cron'u kullanın.
  2. Geçerli kullanıcı oturumunda çalıştırılması amaçlanan programlar/komut dosyaları için bu eğitimde açıklanan yöntemleri kullanın.

Her zaman olduğu gibi herhangi bir sorunuz veya yorumunuz varsa, bunları aşağıdaki yorum bölümüne göndermekten çekinmeyin.