游客发表

如何监测Linux进程的实时IO读写情况

发帖时间:2025-11-04 19:31:59

如何监测Linux进程的实时IO读写情况
复制#!/usr/bin/python # Monitoring per-process disk I/O activity # written by http://www.vpsee.com  import sys,何监 os, time, signal, re   class DiskIO:   def __init__(self, pname=None, pid=None, reads=0, writes=0):   self.pname = pname   self.pid = pid   self.reads = 0 self.writes = 0 def main():       argc = len(sys.argv)   if argc != 1:   print"usage: ./iotop"         sys.exit(0)   if os.getuid() != 0:   print"must be run as root"         sys.exit(0)       signal.signal(signal.SIGINT, signal_handler)       os.system(echo 1 > /proc/sys/vm/block_dump)   print"TASK              PID       READ      WRITE" whileTrue:           os.system(dmesg -c > /tmp/diskio.log)           l = []           f = open(/tmp/diskio.log, r)           line = f.readline()   while line:               m = re.match(\   ^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+), line)   if m != None:   ifnot l:                       l.append(DiskIO(m.group(1), m.group(2)))                       line = f.readline()   continue                 found = False for item in l:   if item.pid == m.group(2):                           found = True if m.group(3) == "READ":                               item.reads = item.reads + 1 elif m.group(3) == "WRITE":                               item.writes = item.writes + 1 ifnot found:                       l.append(DiskIO(m.group(1), m.group(2)))               line = f.readline()           time.sleep(1)   for item in l:   print"%-10s %10s %10d %10d" % \                   (item.pname, item.pid, item.reads, item.writes)   def signal_handler(signal, frame):       os.system(echo 0 > /proc/sys/vm/block_dump)       sys.exit(0)   if __name__=="__main__":       main()   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.

    热门排行

    友情链接