2012-04-26 91 views
0

下面的小脚本应该每10分钟运行一次带有参数的shell命令。它一次运行正确(30分钟前),但现在不玩球(自此以后应该再次进行2次)。我犯了一个错误?Python使用params循环调用shell命令

 
while(True): 
    subprocess.call(["command","param"]) 
    time.sleep(600) 
+0

过程仍在运行? – corn3lius 2012-04-26 16:29:36

+0

你在打什么样的命令?它在做什么? – jdi 2012-04-26 16:32:06

回答

2

你subprocess.call可能阻止你的命令是什么。我怀疑它是你的python脚本,而不管shell命令是什么(花费太长时间)。

你可以判断你的命令是通过检查返回代码完成与否:

print subprocess.call(["command","param"])

它应该打印0是否成功,或抛出一个异常,如果该命令有问题。但是,如果你从来没有看到连续的打印,那么它永远不会从通话中返回。

+0

这是我立即指责Python脚本的错误。我想你可能是对的。我将结果输出到日志文件中,以尝试发现错误。干杯! – Federer 2012-04-26 16:40:51

1

如果您不需要等待命令完成,请尝试subprocess.Popen。

从文档,

subprocess.call:运行通过ARGS中描述的命令。 等待命令完成,然后返回returncode属性。

+0

尽管这会解决阻塞问题,但它仍然不会解决他的命令没有返回的问题,而且如果他使用Popen,他最终只会堆叠挂起的进程。 – jdi 2012-04-26 16:31:09

+0

是的。这部分取决于他所调用的命令,尽管可能最好是通过调用获取返回码。 – Cryptite 2012-04-26 16:33:58