如何使用 commands.getoutput 在后台启动 SimpleHTTPServer
How to start SimpleHTTPServer in background with commands.getoutput
我正在尝试使用 commands.getoutput
在后台启动 SimpleHTTPServer
,但无法启动。
commands.getoutput("python -m SimpleHTTPServer 8080 &> /dev/null &")
(Pdb++) n
sh: -c: line 0: syntax error near unexpected token `;'
sh: -c: line 0: `{ python -m SimpleHTTPServer 8080 &> /dev/null &; } 2>&1'
当我在 linux 提示符下执行相同的操作时,它工作正常:
bash-4.2$ python -m SimpleHTTPServer 8080 &> /dev/null &
[2] 28460
bash-4.2$ ps -ef | grep SimpleHTTPServer
x 27624 22693 0 16:54 pts/16 00:00:00 python -m SimpleHTTPServer 8080
有人可以帮我看看我是否遗漏了什么吗?
既然你已经标记了 Python 2.7,为什么你还在使用 commands
界面?自 Python 2.6 起已弃用,应改用 subprocess
模块:
import subprocess
subprocess.Popen(["python", "-m", "SimpleHTTPServer", "8080"])
应该这样做。或者,更好的是,运行 它与 nohup
因为你的脚本退出可能会杀死它:
subprocess.Popen(["nohup", "python", "-m", "SimpleHTTPServer", "8080"])
要忽略输出,如果您使用的是 Python 3.3+,您可以将 stdout=subprocess.DEVNULL
传递给 subprocess.Popen()
调用,或者您可以自己打开 /dev/null
:
import os
import subprocess
with open(os.devnull, 'w') as t:
subprocess.Popen(["nohup","python","-m","SimpleHTTPServer","8080"], stdout=t, stderr=t)
我正在尝试使用 commands.getoutput
在后台启动 SimpleHTTPServer
,但无法启动。
commands.getoutput("python -m SimpleHTTPServer 8080 &> /dev/null &")
(Pdb++) n
sh: -c: line 0: syntax error near unexpected token `;'
sh: -c: line 0: `{ python -m SimpleHTTPServer 8080 &> /dev/null &; } 2>&1'
当我在 linux 提示符下执行相同的操作时,它工作正常:
bash-4.2$ python -m SimpleHTTPServer 8080 &> /dev/null &
[2] 28460
bash-4.2$ ps -ef | grep SimpleHTTPServer
x 27624 22693 0 16:54 pts/16 00:00:00 python -m SimpleHTTPServer 8080
有人可以帮我看看我是否遗漏了什么吗?
既然你已经标记了 Python 2.7,为什么你还在使用 commands
界面?自 Python 2.6 起已弃用,应改用 subprocess
模块:
import subprocess
subprocess.Popen(["python", "-m", "SimpleHTTPServer", "8080"])
应该这样做。或者,更好的是,运行 它与 nohup
因为你的脚本退出可能会杀死它:
subprocess.Popen(["nohup", "python", "-m", "SimpleHTTPServer", "8080"])
要忽略输出,如果您使用的是 Python 3.3+,您可以将 stdout=subprocess.DEVNULL
传递给 subprocess.Popen()
调用,或者您可以自己打开 /dev/null
:
import os
import subprocess
with open(os.devnull, 'w') as t:
subprocess.Popen(["nohup","python","-m","SimpleHTTPServer","8080"], stdout=t, stderr=t)