Behaviour of subprocess.Popen, ssh and nohup I don'tunderstand

Discussion in 'Python' started by Adriaan Renting, Apr 1, 2011.

  1. L.S.

    I have a problem that a background process that I'm trying to start with
    subprocess.Popen gets interrupted and starts waiting for input no matter
    what I try to do to have it continue to run. It happens when I run it
    with nohup in the background.
    I've tried to find a solution searching the internet, but found none.
    I've written a small test script that reproduces the problem and hope
    maybe here there is someone who can tell me what's going wrong. Any
    suggestions are welcome.

    (renting)myhost> cat test.py
    #!/usr/bin/python
    # script to test subprocess problem
    import subprocess, sys, time

    for f in range(3):
    command = ["ssh", "-T", "localhost", "uptime"]
    comm = subprocess.Popen(command, shell=False, stdin=None,
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
    print '1'
    if comm.returncode:
    print "error: %i" % (comm.return_code)
    else:
    print '2'
    (output, output2) = comm.communicate(input=None)
    print output
    print output2
    print '3'
    time.sleep(3)

    (renting)myhost> python --version
    Python 2.5.2

    (renting)myhost> nohup ./test.py -O2 &
    [1] 15679

    (renting)myhost> 1
    2
    22:40:30 up 24 days, 7:32, 1 user, load average: 0.00, 0.00, 0.00

    None
    3
    1
    2

    [1] + Suspended (tty input) ./test.py -O2
    (renting)myhost> fg
    ../test.py -O2

    22:40:35 up 24 days, 7:32, 1 user, load average: 0.00, 0.00, 0.00

    None
    3
    1
    2
    22:40:56 up 24 days, 7:32, 1 user, load average: 0.00, 0.00, 0.00

    None
    3

    (renting)myhost>

    Now as you can see, it suspends on the second time through the for loop,
    until I bring it to the foreground and hit .
    What you don't see, is that I make it do this by pushing the arrow keys
    a couple of times. The same happens when I would exit the shell, despite
    it running with nohup.
    I don't need to exit to make it suspend, any combination of a few random
    keystrokes makes it do this. It seems depending on the timing though,
    during the sleep(3) it seems to ignore me, only when subprocess is
    actually running will it suspend if I generate keystrokes.
    If the ssh command is executed without -T option it suspends directly,
    so I think it's related to the ssh command. I log in with a
    public/private key pair to avoid having to enter a password.

    Any suggestions are welcome,

    thanks,

    Adriaan Renting
    Adriaan Renting, Apr 1, 2011
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Miki
    Replies:
    4
    Views:
    965
    Thomas Bellman
    Oct 14, 2008
  2. Gideon

    nohup and os.system

    Gideon, Mar 12, 2009, in forum: Python
    Replies:
    0
    Views:
    298
    Gideon
    Mar 12, 2009
  3. Cameron Simpson

    Re: nohup and os.system

    Cameron Simpson, Mar 12, 2009, in forum: Python
    Replies:
    0
    Views:
    381
    Cameron Simpson
    Mar 12, 2009
  4. Kushal Kumaran
    Replies:
    0
    Views:
    569
    Kushal Kumaran
    Apr 1, 2011
  5. Adriaan Renting
    Replies:
    1
    Views:
    649
    Nobody
    Apr 7, 2011
Loading...

Share This Page