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 &")