Bash 연산자 및 작동하지 않음

Bash 연산자 및 작동하지 않음

Bash 참조에 따르면 & 문자로 끝나서 비차단 명령을 내릴 수 있습니다. 그러나 다음 명령을 시도하면 작동하지 않습니다.

python -m SimpleHTTPServer 8080&

내가 이 작업을 계획하는 이유는 역시 Python으로 작성된 또 다른 대규모 프로그램의 일부로 내장된 Python 웹 서버를 시작하고 싶기 때문입니다. 비차단/데몬 모드에서 이 명령을 어떻게 실행할 수 있나요? 비차단 프로세스도 생성해야 하는 "subprocess.Popen()"을 사용하여 Python에서 이 명령을 실행해 보았지만 그것도 작동하지 않습니다.

편집: 이것은 웹 서버를 시작하는 Python 코드의 일부입니다("nohup"을 추가하면 효과가 있는 것 같습니다).

pid_webserver = execute("nohup python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True)
#pid_webserver = execute("python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True)

def execute(command,errorstring='', wait = True, shellexec = True):
    try:
        print 'command=' + command
        p=subprocess.Popen("gksu '" + command + "'", shell=shellexec,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        if wait:
            p.wait()
            result=get_stdout(p)
            return result
        else:
            print 'not waiting'
            return p
    except subprocess.CalledProcessError as e:
        print 'error occured:' + errorstring
        return errorstring

답변1

일하다 &. 하지만 내 생각에 당신이 찾고 있는 것은 nohup python -m SimpleHTTPServer &.

하지만 너도 확인해 봐야 할 것 같아http://docs.python.org/2/library/simplehttpserver.html.

답변2

'&'는 여기서 작동하지 않습니다. 이것은 bash 연산자이며 스크립트에서 명령을 실행하기 위해 bash를 사용하지 않고 Python 스크립트에서 실행하고 있으므로 결코 작동하지 않습니다.

노력하다:

import os
os.system("python -m SimpleHTTPServer 8080 &")

관련 정보