尝试使用pythons命令模块在后台执行shell命令
>>>import commands
>>>output = commands.getstatusoutput("find / > tmp.txt &")
sh: Syntax error: ";" unexpected
任何人都可以解释语法有什么问题吗?那怎么办呢?
Tazim。
答案 0 :(得分:7)
根据getstatusoutput documentation,commands.getstatusoutput(cmd)
执行为
{ cmd ; } 2>&1
所以你的命令就好像是
一样运行{ find / > tmp.txt & ; } 2 >& 1
并且;
在此类命令中的&
之后无效。
您应该使用subprocess module来模拟旧式os.spawn
命令。
尝试
subprocess.Popen("find / > tmp.txt", shell=True)
答案 1 :(得分:1)
我不知道在这样的背景中直接执行命令的方法。特别是,这是因为命令模块不通过bash运行命令,这通常会解析&符号。
您应该从os模块执行fork / exec调用以在后台运行。
答案 2 :(得分:1)
尝试创建daemon以在后台运行您的流程。