Getting pid of a remote process

Miles semanticist at gmail.com
Tue Aug 19 15:25:06 CEST 2008


On Mon, Aug 18, 2008 at 9:34 AM, srinivasan srinivas wrote:
> Could you please suggest me a way to find pid of a process started on a remote machine by the current process??

If ps + grep (or the more robust tool pgrep) won't work because you're
running more than one instance at once, try this: instead of running
the process via SSH directly, write a small wrapper script which runs
the process locally and saves the PID to a file on the machine (or
prints it to stdout if the program itself has no output), and then run
that wrapper remotely.

For example:

import subprocess, sys
f = open(sys.argv[1], 'w')
p = subprocess.Popen(sys.argv[2:])
print >>f, p.pid
f.close()

You may have to be careful with the quoting of the arguments, since
OpenSSH uses a shell to execute the command.  You could then obtain
the pid with something along the lines of:

int(subprocess.Popen(['ssh', <hostname>, 'cat', <pidfile>],
stdout=subprocess.PIPE).stdout.read())

-Miles



More information about the Python-list mailing list