2013-03-26 2 views
2

나는 아래의 fabfile을 가지고 있습니다. 수동으로 원격 서버에 ssh하고 fabfile 당 정확히 명령을 수행하면 올바르게 작동합니다. 그러나 fabfile을 실행하면 수동으로 실행할 때와 동일한 진행률을 출력하고 오류가 없다고보고하고 "done"으로 종료하지만 마지막 줄은 실제로 작동하지 않습니다. 어떤 충고라도 잘 될 것입니다. 파이썬 패브릭 스크립트는 완료되었지만 제대로 작동하지 않습니다.

는 업데이트 :

몇 번 더를 pserve 로그를 미행하고 fabfile를 시도 후, 무작위로는 한 번했다. 아무 것도 변하지 않았고 이후에 실행했을 때 작동하지 않았습니다. 그래서 나는 무슨 일이 일어나고 있는지 모른다. 타이밍 문제일까요? 여기

코드입니다 :

# kills a running pserve process and restarts it in daemon mode 

from fabric.api import * 

def deploy(): 
    pid = run("pidof -x pserve") # works 
    run("sudo kill -15 %s" % pid) # works 
    with cd('~/Repos/bessie'): 
     run("sudo pserve development.ini --daemon") # outputs "Entering 
                # daemon mode" but doesn't 
                # actually start the process 

출력 :

[ec2-xxx.ap-southeast-2.compute.amazonaws.com] Executing task 'deploy' 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: pidof -x pserve 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 28998 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 

[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: sudo kill -15 28998 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: sudo pserve development.ini --daemon 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: Entering daemon mode 
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 


Done. 
+1

pserve.log는 무엇을 말합니까? – favoretti

+0

로그에 아무것도 표시되지 않습니다. 마치 아무 일도 일어나지 않는다. – MFB

답변

2

기본적으로 단지 sudo('pserve --daemon development.ini', pty=False)입니다. 패브릭이 사용하는 의사 TTY는 프로세스 분리에 아주 잘 작동하지 않습니다.

http://docs.fabfile.org/en/1.5/faq.html#init-scripts-don-t-work

사이드 노트를 사용 감독, 신출내기 나 대신 pserve --daemon의 다른 실제 프로세스 관리자. 당신의 프로세스가 죽으면,이 쉬이 트를 사용하는 방법을 알 수 없습니다.

+0

감사합니다. – MFB

0

당신은 필요하지 않습니다

run("sudo....") 

직물은 그에게 특별한 방법 sudo()있다.

sudo("pserve development.ini --daemon") 

둘째, 그것은 다음 직물이 아니다처럼, 그것은 pserve 자체의 모양 :로 그래서 하나, 그 라인을 다시 작성할 수 있습니다.

+0

고마워, 나는'sudo' 방법에 대해 몰랐다. 더 많은 단서를 보려면 원래 질문의 업데이트를 참조하십시오. – MFB

관련 문제