मुझे दो सर्वरों (उबंटू और सेंटो) के उपयोगकर्ताओं द्वारा सीपीयू उपयोग की निगरानी करने की आवश्यकता है। उदाहरण के लिए:
user1 5%
user2 10%
...
वहाँ एक उपकरण के समान है top
या htop
जो ऐसा कर सकता है?
मुझे दो सर्वरों (उबंटू और सेंटो) के उपयोगकर्ताओं द्वारा सीपीयू उपयोग की निगरानी करने की आवश्यकता है। उदाहरण के लिए:
user1 5%
user2 10%
...
वहाँ एक उपकरण के समान है top
या htop
जो ऐसा कर सकता है?
जवाबों:
वर्तमान में लॉग इन किए गए प्रत्येक उपयोगकर्ता के लिए कुल CPU उपयोग को मुद्रित करने के लिए एक स्क्रिप्ट है , 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; }'
और यहां सभी उपलब्ध उपयोगकर्ताओं के CPU उपयोग को प्रिंट करने के लिए थोड़ा संशोधित संस्करण है (लेकिन शून्य के सीपीयू उपयोग के साथ लोगों को छोड़ देना), 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; }'
पहला कॉलम उपयोगकर्ता नाम, दूसरा कॉलम एग्रीगेटेड सीपीयू उपयोग और तीसरा कॉलम सामान्य सीपीयू का उपयोग सीपीयू की संख्या के अनुसार करता है।
प्रत्येक उपयोगकर्ता के लिए कुल मेमोरी उपयोग दिखाने के लिए एक संबंधित स्क्रिप्ट भी है : showPerUserMem.sh
लाइव-मॉनिटरिंग के लिए बस समय-समय पर watch
कमांड के माध्यम से इन लिपियों को निष्पादित करें ।
CPU उपयोग द्वारा छांटने के लिए, आउटपुट को पाइप करें sort -k2 -nr
।
$USER
अपने उपयोगकर्ता नाम, पहले से ही है तो केन्द्र शासित प्रदेशों के रूप में एक ही है id -nu
आदेश का प्रयोग कर रहे मैं अपनी पोस्ट को संपादित किया है इसे बदलने के
/etc/init.d/
निर्देशिका में दस में से नौ स्क्रिप्ट ऐसा कर रही हैं। इसके विपरीत मौजूदा पर्यावरण चर को अधिलेखित करने से बचना चाहिए।
top -u user
परिणाम को फ़ाइल में पुनर्निर्देशित कर सकते हैं , और फिर किसी अन्य उपयोगकर्ता की निगरानी कर सकते हैं। फिर आप एक निश्चित अंतराल पर अपने उपयोगकर्ताओं के लिए उपयोग की निगरानी करेंगे।