目前,每天中午cpu的負載都會突然增加,通過htop命令檢視到此時的vbox的cpu佔用率一致蠻高的,便計畫對vbox的cpu使用率進行計畫性監控,最開始的想法很簡單就是通過呼叫top命令來進行cpu使用率的監控,但監控了好幾天,發現值一直為0,而htop中值是一直有變化的,正常的結果也不應該為0,可惜,我沒法對htop進行重定向,便計畫通過/proc//stat
檔案中的資料進行監控。可是當讀取/proc//stat
檔案內容後發現第14,15,16,17列的值完全沒有變化(用於計算cpu使用率),預估top的值沒有變化也和此有關,但htop的值一直有變化,而且顯示的不止乙個程序,故猜想htop讀取的是執行緒值,所以開始讀取/proc//task//stat
檔案內容,發現所需列的值有發生變化,而且一秒內變化的值和htop顯示的值類似(此段內容,個人沒法確定正確與否),故此,讀取執行緒cpu使用率,**如下:
import subprocess
import time
import psutil
import os
name = 'vbox_cpu_info'
verbose = true
#通過psutil讀取vboxheadless程序pid
defusepsutil
(): pidlist = psutil.pids()
processtotest = "vboxheadless"
for eachpid in pidlist:
try:
eachprocess = psutil.process(eachpid)
processname = eachprocess.name()
if(processname == processtotest):
return eachpid
except psutil.nosuchprocess,pid:
print
"no process found with pid=%s"%(pid)
#得到執行緒的cpu占用時間
defget_cpu_time
(): vboxpid = trypsutil()
currentdirs = os.listdir("/proc/%d/task/"%vboxpid)
alldirs =
timeofcpu =
for i in currentdirs:
for i in alldirs:
filename = "/proc/%d/task/%d/stat"%(vboxpid,int(i))
with open(filename, 'r') as f:
line = f.readlines()
line_str = ''.join(line)
line_split = line_str.split()
return timeofcpu
#得到執行緒id
defget_tid
(): vboxpid = trypsutil()
currentdirs = os.listdir("/proc/%d/task/"%vboxpid)
alldirs =
for i in currentdirs:
return alldirs
#得到tid和cpu used
defget_stats
(): firsttime =
lasttime =
firsttime = get_cpu_time()
time.sleep(1)
lasttime = get_cpu_time()
cpuofused = list(map(lambda x: x[0]-x[1], zip(lasttime, firsttime)))
tid = get_tid()
print zip(tid,cpuofused)
get_stats()
若需在nagios中監控,只需修改少量**即可,在此忽略,若想在collectd中監控,可參考: linux中的cp命令
示例 複製檔案,只有原始檔較目的檔案的修改時間新時,才複製檔案 cp u v file1 file2 將檔案file1複製成檔案file2 cp file1 file2 採用互動方式將檔案file1複製成檔案file2 cp i file1 file2 將檔案file1複製成file2,因為目的檔案...
Linux中的cp命令
linux中cp命令用來賦值檔案或者目錄,其常用的命令選項如下 下面是cp命令的一些使用示例 預設情況下,cp命令賦值出來的許可權或者屬性通常 自操作者本身。比如上面在root身份在執行cp命令,將 var log wtmp賦值到 tmp wtmp,此時 tmp wtmp檔案的許可權與所屬群組已經不...
linux中的cp命令總結
cp總結 功能說明 複製檔案或目錄 語法 cp 引數 源檔案目錄 目標檔案或目錄 該命令用於將乙個或多個檔案複製到目標目錄 補充說明 cp指令用在複製檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是乙個已經存在的目錄,則它會把前面指定的所有檔案或目錄複製到該目錄中。若同時指定多個檔案或目...