psuti最新版常用函數version 3.1.1

創建Procss類,3506是pid
 p = psutil.Process(3506)
實例p裏的內容應該不是固定的,實際進程消失的情況下調用實例內的函數會抛出psutil.NoSuchProcess錯誤(至少0.6版的process_iter()返回的Procss實例會如此)
獲取當前連接
>>> a =  p.connections()
>>> print type(a[0])
<class 'psutil._common.pconn'>
>>> print a
[pconn(fd=5, family=2, type=1, laddr=('172.20.0.93', 2677), raddr=(), status='LISTEN')]
獲取打開的文件
>>> print p.open_files()   
[popenfile(path='/var/log/middleware/info.log', fd=1), popenfile(path='/var/log/middleware/errlog.log', fd=2), popenfile(path='/var/log/middleware/info.log', fd=3), popenfile(path='/var/log/middleware/errlog.log', fd=4)]
 上述方法可以解決我原來在論壇裏沒人回答的問題
http://bbs.chinaunix.net/thread-4179094-1-1.html
常規信息獲取cpu、記憶體信息獲取
  1. # -*- coding: UTF-8 -*-
  2. __author__ ='loliz_000'

  3. import psutil

  4. PSUTIL_INTERVAL_TIME = 0.1

  5. #返回伺服器記憶體與cpu信息
  6. def get_mem_and_cpu_info(process=None):
  7.     if process is None:
  8.         try:
  9.             #獲取記憶體與cpu信息,這裏的類變量賦值後不隨系統內的狀況變化而變化
  10.             #需要獲取系統最新的狀態需要再次調用對應函數返回相應類
  11.             mem_info = psutil.virtual_memory()
  12.             cpu_info = psutil.cpu_times_percent(PSUTIL_INTERVAL_TIME)
  13.         except:
  14.             return'get mem or cpu info from systme error'
  15.         #記憶體信息
  16.         total = mem_info.total
  17.         free = mem_info.free
  18.         buffers = mem_info.buffers
  19.         cached = mem_info.cached
  20.         percent = mem_info.percent
  21.         #used = total -(free + buffers + cached)
  22.         #used_with_cache = mem_info.used
  23.         #cpu占用信息
  24.         cpu_count = psutil.cpu_count()
  25.         cpu_user = cpu_info.user
  26.         cpu_system = cpu_info.system
  27.         cpu_iowait = cpu_info.iowait
  28.         cpu_irq = cpu_info.irq
  29.         cpu_idle = cpu_info.idle
  30.         mem_line ="Mem used:%s%%|free:%d|buffers:%d|cached:%d|total:%d\t"%(
  31.             percent,
  32.             free/1048576,buffers/1048576,cached/1048576,
  33.             int(total/1048576)
  34.         )
  35.         cpu_line ='Cpu count:%d|us:%f|sys:%f|iow:%f|irq:%f|idl:%f'% \
  36.                    (cpu_count, cpu_user, cpu_system, cpu_iowait, cpu_irq,cpu_idle)
  37.         del mem_info
  38.         del cpu_info
  39.         return mem_line + cpu_line
  40.     elif process is isinstance(process, psutil.Process):
  41.         pass
  42.         try:
  43.             cpu_info = process.cpu_percent(PSUTIL_INTERVAL_TIME)
  44.             mem_info = process.memory_info()
  45.         except:
  46.             return'get mem or cpu info from process error'
  47.     else:
  48.         return'process argv is not psutil.Process'

#psutil 0.6和3.1.1的目前可以知道寫法不一樣的地方有
  1. #檢查進程是否運行
  2. for process in psutil.process_iter():
  3.     #psutil獲取對應信息,必須catch NoSuchProcess,
  4.     try:
  5.         if psutil.__version__ =='3.1.1':
  6.             proc_name = process.name()
  7.             proc_exe = process.exe()
  8.             proc_cmd = process.cmdline()
  9.             proc_gid= process.gids()[1]
  10.             #>>>print p.gids()
  11.             #pgids(real=0, effective=0, saved=0)
  12.             proc_uid = process.uids()[1]
  13.             #>>>print p.uids()
  14.             #puids(real=0, effective=0, saved=0)
  15.             proc_username = process.username()
  16.         else:
  17.             proc_name = process.name
  18.             proc_exe = process.exe
  19.             proc_cmd = process.cmdline
  20.             proc_gid= process.gids[1]
  21.             proc_uid = process.uids[1]
  22.             proc_username = process.username
  23.     #獲取的的進程信息可能是已經結束的進程,直接跳過
  24.     except psutil.NoSuchProcess:
  25.         continue
  26.     except:
  27.         break

更多相關文章
  •  根據format字符串格式化date值.下列修飾符可以被用在format字符串中: %M 月名字(January--December) %W 星期名字(Sunday--Saturday) %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等.) %Y 年, 數字, 4 位 %y 年, ...
  • MySql常用函數大全講解
            林炳文Evankaka原創作品.轉載請注明出處http://blog.csdn.net/evankaka        MySQL數據庫中提供了很豐富的函數.MySQL函數包括數學函數.字符串函數.日期和時間函數.條件判斷函數.系統信息函數.加密函數.格式化函數等.通過這些函數,可以 ...
  • MySQL管理與優化(4):常用函數
    常用函數 字符串函數: 常用的字符串函數      CONCAT(s1, s2, ...):依次連接字符串.   mysql> SELECT CONCAT('aa', 'bb'), CONCAT('abc', 'de', 'fgh'); +--------------------+------ ...
  • 由于專案開始去O(Oracle)了,mysql的基礎知識弱的可憐,于是最近把mysql自己安裝著玩了下,順便下決心把mysql的常用函數整理一遍.一,數學函數1 ABS(X)--返回X的絕對值SELECT ABS(-1)2 BIN(X)--返回X的二進制,OCT(X)返回8進制,HEX(X)返回16 ...
  •  PostGIS中的常用函數以下內容包括比較多的尖括號,發布到blogger的時候會顯示不正常,內容太多我也無暇一個個手動改代碼,因此如有問題就去參考PostGIS官方文檔.首先需要說明一下,這裏許多函數是以ST_[X]yyy形式命名的,事實上很多函數也可以通過xyyy的形式訪問,在PostGIS的 ...
  • (1)php數組處理常用的函數array_change_key_case - 返回字符串鍵名全爲小寫或大寫的數組array_chunk - 將一個數組分割成多個array_combine - 創建一個數組,用一個數組的值作爲其鍵名,另一個數組的值作爲其值array_count_values - 統計 ...
  • YXcms其他標簽 YXcms面包屑導航標簽 當前位置:<a href="{url()}">首頁</a> > {loop $daohang $vo}   <a href="{$vo['url']}">{$vo['nam ...
  • R語言常用函數 基本 一.數據管理vector:向量 numeric:數值型向量 logical:邏輯型向量character:字符型向量 list:列表 data.frame:數據框c:連接爲向量或列表 length:求長度 subset:求子集seq,from:to,sequence:等差序列r ...
一周排行
  • 今天在導入測試伺服器導入txt數據的時候,提示報錯:ERROR 1148 (42000): The used command is not allowed with this MySQL version我的系統是ub ...
  • 一.位置參數 位置參數是一種在調用shell程序的命令行中按照各自的位置決定的變量,是在程序名之後輸入的參數.位置參數之間用空格分隔,shell取第一個位置參數替換程序文件中的,第二個替換,依次類推.是一個特殊的變量 ...
  • 我對女性做工程師的一點看法(三八節)
                  我對女性做工程師的一點看法                   ...
  •     如果不再需要某個遠程分支了,比如搞定了某個特性並把它合並進了遠程的 master 分支(或任何其他存放 穩定代碼的地方),可以用這個非常無厘頭的語法來刪除它:git push  [遠程名] :[分支名].如果 ...
  • Go的pprof使用
    go中有pprof包來做代碼的效能監控,在兩個地方有包:net/http/pprofrun ...
  • 1.安裝vsftpd組件,安裝完後,有/etc/vsftpd/vsftpd.conf 文件,用來配置,還有新建了一個ftp用戶和ftp的組,指向home目錄爲/var/ftp,默認是nologin(不能登錄系統) y ...
  • 斷斷續續 的寫shell 老是忘記,現在把寫過的傳上來 ,好複習# /bin/bash usage(){ echo "usage : `basename $0` 1111111111111111111111 ...
  • 原帖鏈接:http://www.iteye.com/topic/1117960簡單說一下問題,LZ要求解釋下面的Java代碼,x爲什麽最後是1.Integer x = 1; x = x++; System.out.p ...
  • Zabbix系統數據采集方法總結 在Zabbix系統中有多達十三種數據采集方法,每種方法所使用的原理和場景也不一樣.下表列出了這十三種數據采集方法的原理及適合的場景. 序號 方法名稱 描述 1 通過Zabbix被監控 ...
  • [問題] 如果搞ACM搞得不太好,就是網路賽出不了線的話,還有必要搞ACM嗎?是不是應該重新給自己定位,學點實用的技術比較好?[回答] 上高中,就是要考大學:上大學,以找到工作,或者上了研究生爲目標.我們將成長過程忽 ...