在后台执行命令

时间:2010-06-16 10:32:50

标签: python shell

尝试使用pythons命令模块在后台执行shell命令

>>>import commands
>>>output = commands.getstatusoutput("find / > tmp.txt &")
   sh: Syntax error: ";" unexpected

任何人都可以解释语法有什么问题吗?那怎么办呢?

Tazim。

3 个答案:

答案 0 :(得分:7)

根据getstatusoutput documentationcommands.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以在后台运行您的流程。