Değer farkını tespit etmek ve bir dosyaya yazmak için “izle” yi kullanma


0

Bir sunucuda aralıklı bir% CPU artışının nedenini şu komutla bir sunucuda yakalamaya çalışıyorum: watch -n .5 "ps aux | sort -rk 3,3 | head -n 2" burada işlemi en yüksek% ile gösteriyor Her 5 saniyede bir CPU.

Ancak, yakalanması zor olduğu için (olay rastgeledir ve ne kadar süreceği konusunda hiçbir fikrim yok), aşağıdakileri yapmak istiyorum: 1. Aralığı azaltın (olayı yakalama şansını artırmak için) ve çıktısını yazmak Bir dosya 2. En üstteki süreç genellikle sabit olduğu için, böyle büyük bir dosya oluşturmaktan kaçınmak için sadece birbirini izleyen iki çıktı (CPU çivisi oluştuğunda olduğu gibi) arasında bir değer farkı olduğunda yazmayı istiyorum.

TIA!

Yanıtlar:


1

İzlemeyi unutun, bu en azından teorik olarak yapmalı.

while true; do
  # I cut the header first with tail
  cat file <(ps aux | tail -n +2 | sort -rk 3,3 | head -n 2) | sort | uniq | sponge file
  # A certain amount of delay
  sleep 0.1
done

Tek sorun, her bir işlemin CPU kullanımı zaman içinde değiştiğinden ve aradığınız şey özellikle CPU kullanımı olduğundan, etkisi uniqçok sınırlıdır ve hala çok miktarda veri üretilmektedir. Sizin cutiçin önemli olmayan değişkenleri bastırmak için kullanabilirsiniz, böylece değişkenlikleri üretilen veri noktalarının sayısını arttırmaz.

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.