İki sunucunun (Ubuntu ve CentOS) kullanıcıları tarafından CPU kullanımını izlemem gerekiyor. Örneğin:
user1 5%
user2 10%
...
Buna benzer bir araç var mı topya da htopbunu yapabilir mi?
İki sunucunun (Ubuntu ve CentOS) kullanıcıları tarafından CPU kullanımını izlemem gerekiyor. Örneğin:
user1 5%
user2 10%
...
Buna benzer bir araç var mı topya da htopbunu yapabilir mi?
Yanıtlar:
Şu anda oturum açmış olan her kullanıcı için toplam CPU kullanımını yazdırmak için bir komut dosyası , showPerUserCPU.sh :
own=$(id -nu)
cpus=$(lscpu | grep "^CPU(s):" | awk '{print $2}')
for user in $(who | awk '{print $1}' | sort -u)
do
# print other user's CPU usage in parallel but skip own one because
# spawning many processes will increase our CPU usage significantly
if [ "$user" = "$own" ]; then continue; fi
(top -b -n 1 -u "$user" | awk -v user=$user -v CPUS=$cpus 'NR>7 { sum += $9; } END { print user, sum, sum/CPUS; }') &
# don't spawn too many processes in parallel
sleep 0.05
done
wait
# print own CPU usage after all spawned processes completed
top -b -n 1 -u "$own" | awk -v user=$own -v CPUS=$cpus 'NR>7 { sum += $9; } END { print user, sum, sum/CPUS; }'
Ve burada tüm kullanılabilir kullanıcıların CPU kullanımını yazdırmak için biraz değiştirilmiş bir versiyon (ancak CPU kullanımı sıfır olanları atlamak), showAllPerUserCPU.sh :
own=$(id -nu)
cpus=$(lscpu | grep "^CPU(s):" | awk '{print $2}')
for user in $(getent passwd | awk -F ":" '{print $1}' | sort -u)
do
# print other user's CPU usage in parallel but skip own one because
# spawning many processes will increase our CPU usage significantly
if [ "$user" = "$own" ]; then continue; fi
(top -b -n 1 -u "$user" | awk -v user=$user -v CPUS=$cpus 'NR>7 { sum += $9; } END { if (sum > 0.0) print user, sum, sum/CPUS; }') &
# don't spawn too many processes in parallel
sleep 0.05
done
wait
# print own CPU usage after all spawned processes completed
top -b -n 1 -u "$own" | awk -v user=$own -v CPUS=$cpus 'NR>7 { sum += $9; } END { print user, sum, sum/CPUS; }'
İlk sütun kullanıcı adını, ikinci sütun toplu CPU kullanımını ve normalleştirilmiş CPU'nun CPU çekirdek sayısına göre kullandığı üçüncü sütunu temsil eder.
Her kullanıcı için toplam bellek kullanımını göstermek için ilgili bir komut dosyası da vardır : showPerUserMem.sh
Canlı izleme için bu komut dosyalarını düzenli aralıklarla watch komutla .
CPU kullanımına göre sıralama için, çıkışı boru hattına bağlayın sort -k2 -nr.
$USERkullanıcı adınız zaten, bu yüzden ut kullandığınız id -nukomutla aynı . Bunu değiştirmek için yayınınızı düzenledim.
/etc/init.d/da bunu yapıyor. Buna karşılık mevcut ortam değişkenlerinin üzerine yazmaktan kaçınılmalıdır.
top -u usersonucu göz önünde bulundurarak bir dosyaya yönlendirebilir ve ardından başka bir kullanıcıyı izleyebilirsiniz. daha sonra, belirli bir aralıkta kullanıcılarınız için proc kullanımını izlerdiniz.