สคริปต์หรือคำสั่งเพื่อรับปริมาณการใช้หน่วยความจำของผู้ใช้

โฮสต์ของฉันกำลังเสนอ RAM ในจำนวนจำกัดสำหรับเว็บไซต์ของฉัน และฉันต้องการตรวจสอบการใช้หน่วยความจำโดยการเรียกใช้สคริปต์ใน cron

ฉันได้สร้างคำสั่งนี้:

ps -u xxxxxx -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'

แต่วิธีที่โฮสต์ของฉันกำลังคำนวณหน่วยความจำนั้นมีลักษณะเฉพาะ โดยจะละเว้นกระบวนการที่ทำงานน้อยกว่า 5 นาที

คุณรู้จักคำสั่งหรือสคริปต์ Python ที่สามารถแสดงหน่วยความจำที่ใช้ทั้งหมดโดยไม่สนใจกระบวนการที่มีอายุสั้นหรือไม่


person Vallieres    schedule 13.09.2011    source แหล่งที่มา


คำตอบ (1)


ใช้ etime เพื่อค้นหาเวลาที่ผ่านไปของกระบวนการ จากนั้น คุณสามารถแก้ไขคำสั่ง awk ของคุณเพื่อตรวจสอบว่าเวลานี้มากกว่า 5 นาทีหรือไม่

ps -u xxxxxx -o rss,etime,command | ...

รูปแบบของเวลาที่ผ่านไปคือ [[dd-]hh:]mm:ss ซึ่งหมายความว่าเวลาอาจเป็น 00:30 น. 12:57:39 น. หรือแม้กระทั่ง 4-08:27:12 น. คุณสามารถใช้ awk เพื่อแยกวิเคราะห์รูปแบบเวลานี้และแปลงเป็นวินาที ครั้งในวินาที ให้ตรวจสอบว่าเป็นเวลามากกว่า 5 นาทีหรือไม่ และหากเป็นเช่นนั้นให้เพิ่มเข้ากับผลรวมของ rss

นี่คือสคริปต์ตัวอย่างที่ทำสิ่งนี้:

ps -u xxxxxx -o rss,etime,command | grep -v peruser | grep -v RSS | sed 's/^ *//g' | awk '{
 split($2,arr,":") #split time on :
 len=0
 for(i in arr) len++ 
 secs=arr[len]+60*arr[len-1] #convert to seconds
 if(len>2) secs=secs+substr(arr[len-2],length(arr[len-2])-1)*60*60

 if(secs>5*60) { #check if more than 5 minutes
     print $0 #print out the process
     sum+=$1 
 }
} END{print "SUM:"sum/1024}'
person dogbane    schedule 13.09.2011
comment
ฉันแย่มากกับคำสั่ง unix :( คุณช่วยบอกวิธีแก้ไขคำสั่ง awk ของฉันและกรองกระบวนการโดยใช้เวลา 5 นาทีหรือน้อยกว่านั้นหน่อยได้ไหม ขอบคุณ! - person Vallieres; 15.09.2011
comment
ให้ตายเถอะ ฉันไม่ได้รับการแจ้งเตือนคำตอบของคุณ ฉันจะทดสอบสคริปต์ของคุณทันทีและโพสต์ผลลัพธ์ของฉันในวันพรุ่งนี้ ขอบคุณ dogbane! - person Vallieres; 23.09.2011