Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I read the memory of a process in python in linux?

I'm trying to use python and python ptrace to read the memory of an external process. I need to work entirely in python, and I've been trying to read and print out the memory of a process in linux.

So for example I've tried the following code, which keeps giving me IO errors:

proc_mem = open("/proc/%i/mem" % process.pid, "r")
print proc_mem.read()
proc_mem.close()

Mostly I just want to repeatedly dump the memory of a process and look for changes over time. If this is the correct way to do this, then what is my problem? OR is there a more appropriate way to do this?

like image 912
rvorderm Avatar asked Dec 10 '12 19:12

rvorderm


1 Answers

Call a shell command from python - subprocess module

import subprocess

# ps -ux | grep 1842 (Assuming 1842 is the process id. replace with process id you get)

p1 = subprocess.Popen(["ps", "-ux"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", "1842"], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
print output

and parse through output to see its memory utilization

like image 151
Sudheer Avatar answered Oct 01 '22 21:10

Sudheer