2012-09-06 3 views
0

아래에 표시된 python 스크립트를 실행하고 있습니다. 스크립트는 원격 시스템에 ssh를 수행하고 백그라운드에서 c 프로그램을 실행합니다. 그러나 파이썬 스크립트를 실행하면 다음과 같은 결과가 출력됩니다.프로세스가 백그라운드로 진행되지 않습니다.

위의 내용은 a.out이 실행되었고 pid가 [1] 2115임을 의미합니다. 그러나 내가 원격 컴퓨터에 로그인하고 'ps'명령을 통해 a.out을 확인하면 나는 그것을 보지 못합니다. 또 다른 관찰은 Python 스크립트 thread.sleep (20)에 지연 명령문을 추가하고 스크립트가 실행되는 동안 원격 시스템을 체크인하면 a.out이 활성 상태라는 것입니다.

#!/usr/bin/python 
      import HostMod #where ssh function is wrote 
      COMMAND_PROMPT1 = '[#$] ' 
      p = HostMod.HostModule() 
      obj1=p.HostLogin('10.200.2.197', 'root', 'newnet') #ssh connection to remote system 
      obj1.sendline ('./a.out > test.txt &') #sending program to remote machine to executethere 
      obj1.expect (COMMAND_PROMPT1) 
      print obj1.before 
      #a.out program 
      int main() 
      { 
        while(1) 
        { 
          sleep(10); 
        } 

        return 0; 
      } 
+1

왜 ssh 용 Fabric과 같은 것을 사용하지 않습니까? –

답변

0

nohup

... 
obj1.sendline ('nohup ./a.out > test.txt &') #sending program to remote machine to executethere 

를 사용해보십시오 ./a.out

+0

나는 또한 절대 경로와 함께 그 기대 출력을 올렸어. – user1652226

0

의 절대 경로를 제공하려고하지만 당신은 정말 ssh를 통해 명령을 호출하는 쉘을 사용해서는 안하시기 바랍니다. ssh 프로토콜은 실행중인 명령을 지원합니다.

ssh somehost nohup sleep 20 
<Ctrl+C> 

ssh somehost 
ps ax | grep sleep 

그리고 당신은 당신의 sleep 프로세스가 계속 실행을 참조한다 : 나는 당신의 HostMod 모듈이 작동하는 방법 확실하지,하지만 당신은 당신의 쉘에서 이것을 시도 수 (포트 subprocess을 사용하기에 쉬운 것입니다). 이 방법은 셸을 인스턴스화하지 않으며 훨씬 더 안정적입니다. 셸이 실행되는 것을 제어 할 수도 있고 그렇지 않을 수도 있고, ~/.(...)rc 파일에 무엇이 들어 있는지 등등이 가능합니다.

+0

고맙습니다. – user1652226

관련 문제