On Mon, Aug 18, 2008 at 9:34 AM, srinivasan srinivas wrote:
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.Pope n(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=subproce ss.PIPE).stdout .read())
-Miles
Could you please suggest me a way to find pid of a process started on a remote machine by the current process??
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.Pope n(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=subproce ss.PIPE).stdout .read())
-Miles