<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 概述 通過計算linux系統的/proc文件中物理內存相關內容,獲取指定進程所占的物理內存。 這里以獲取apache進程的物理內存和所占比例為例。 ### 腳本 * 此腳本可以作為模塊使用 * apache會開啟多個進程,因此這個腳本適合單進程和多進程。 * 在主函數外,對計算過程進程了封裝,定義了`getProgTotalMem`函數,簡化了主函數中的內容. * 當進程不存在時,pidof不報錯,輸出為空,因此這里檢測進程是否存在應特別注意 * 可在[github gist][1]中獲取腳本,被墻的原因,多數情況網頁開。 ```python #!/usr/bin/env python # coding: utf-8 import os import sys from subprocess import Popen, PIPE def getPidList(prog_name): """獲取進程的所有PID 輸入:進程名 返回:進程PID列表""" p = Popen(['pidof', '%s' % prog_name], stdout=PIPE, stderr=PIPE) std_out, std_err = p.communicate() # 當進程不存在時,pidof也不報錯,所以檢測std_out如果為空,說明進程不存在。 if std_out: pids = std_out.split() return pids else: print 'the prog %s is not exist.' % prog_name sys.exit() def getProgMemDict(pids): """獲取進程每個PID所占的物理內存,存入字典 輸入:進程PID列表 返回:形如{PID:mem}的字典""" mem_dict = {} for pid in pids: fn = os.path.join('/proc', pid, 'status') with open(fn,'r') as fd: for line in fd: if line.startswith('VmRSS'): mem = int(line.split()[1]) mem_dict[pid] = mem break return mem_dict def getProgTotalMem(prog_name): """獲取進程所占的物理內存 輸入:進程名 輸出:進程所占的物理內存""" # 獲取進程所有PID pid_list = getPidList(prog_name) # 獲取進程物理內存字典 prog_mem_dict = getProgMemDict(pid_list) # 計算進程總的的物理內存 prog_total_mem = sum([mem for mem in prog_mem_dict.itervalues()]) return prog_total_mem def getSysTotalMem(): """獲取系統總的物理內存 輸入:無 輸出:總的物理內存""" with open('/proc/meminfo') as fd: for line in fd: if line.startswith('MemTotal'): mem = int(line.split()[1]) return mem if __name__ == '__main__': httpd_total_mem = getProgTotalMem('http') sysmem = getSysTotalMem() print 'apache memory is: %d kb, and %.2f%%' % (httpd_total_mem, httpd_total_mem/float(sysmem)) ``` [1]:https://gist.github.com/PoplarYang/69daae1e2b11a309e0de5a6a52cca5c4
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看