Awk çıktısını (periyodik, sürekli girdi ile) çıktı dosyasına nasıl bağlayabilirim?


10

Ben bir komut yazmaya çalışıyorum o boruların sürekli çıkış serbest belirli bir değer (boş bellek) ayrıştırır ve bir zaman damgası ile bir dosyaya bu çıkışı awk komutuna komuta (her saniye çalıştırın). Komutta şu anki girişimlerim:

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4 }' >>memOut

Ve alternatif olarak, biraz Google'dan sonra

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4 >>"memOut"}'

Her çalıştırma boş dosyalar oluşturur. Herhangi bir öneri veya muhtemelen farklı yöntemler?

Yanıtlar:


13

memOutYürütme sırasında bir şey görmek için arabelleği temizlemeniz gerekir :

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4; fflush(stdout) }' >> memOut

İşte alternatif bir sürüm:

while sleep 1; do sed -n "s/MemFree: */`date`, /p" /proc/meminfo; done >> memOut

Bu bana istediğim çıktı dosyasını verdi. Teşekkür ederim!
Mark

3

Eski sürümleriniz awkiçin kullanmanız gerekebilir system("").

Aslında fflush(stdout)en son sürümlerine ilişkin içindir awkve gawkonun sadece Aralık 2012 yılından bu yana POSIX standardında olduğu gibi.

free -mto -s 1 | awk '/Mem/ { 
    print strftime("%r") "," $4;
    system(""); # Flush output
}' >> memOut

Not kullanarak bu system("")sifon her dosya tanıtıcı onun tam açıklamaları ise gawk"9.1.4 giriş / çıkış Fonksiyonlar" el bölüm.


3

Belirli sürümlerinde awk(örn. Mawk 1.3.3) -W interactiveborularla arabelleksiz çalışmayı etkinleştirmek için komut satırı bayrağını eklemeniz gerekir .


2

Sadece istediğinizi aldığınızdan ve özel olarak sorduğunuzdan değil emin olmak için .

Programlar için sistemdeki kullanılabilir belleği bilmek istiyorsanız, bu daha uygun olabilir:

free -m -s 1 | awk '/buffers\/cache/ { print strftime("%r") "," $4; fflush(stdout) }' >> memOut

Mem satırının Kullanılan sütunu önbellekleri ve arabellekleri içerir ve çoğu durumda en azından not edilmesi gereken belirli bir bilgisayar / görev için bellek kullanımını izlemek istediğinizde.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.