Python脚本挂起异常直到ctrl-c



我在一台使用python 2.6.6运行RH Linux的服务器上运行python脚本时遇到问题。当我运行任何脚本并且它产生异常时,该脚本将挂起,直到我按下CTRL-C,然后它打印回溯信息。当我使用脚本第一行的shebang从命令行运行脚本而不直接调用python时,就会发生这种情况。如果我通过调用python来执行脚本,我就不会有同样的挂起问题。我搜索过并看到了类似的问题,但它们与特定的库有关,所有python脚本都会出现这种情况。我用相同的脚本尝试了不同的服务器,但没有问题。我已经包含了一个我一直在测试的简单脚本。它试图打开一个不存在的文件。

#!/usr/bin/env python
tempfile = open('noexists.txt','r')

当我在命令行上以"test.py"的形式执行代码时,我会得到以下响应:

~/bin$> test.py
^CTraceback (most recent call last):
  File "/export/home/jwd3/bin/test.py", line 2, in <module>
    tempfile = open('noexists.txt','r')
IOError: [Errno 2] No such file or directory: 'noexists.txt'

如果我以"python test.py"的形式执行它,那么我会得到以下响应:

~/bin$> python test.py
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    tempfile = open('noexists.txt','r')
IOError: [Errno 2] No such file or directory: 'noexists.txt'

区别在这里很难判断,但在执行时非常明显。查看第一个示例输出,注意Traceback之前的"^C"。在我使用CTRL-C之前,脚本一直处于挂起状态。第二个示例输出立即返回异常的回溯,而不挂起。

我试着把剧本移到一个新的位置,把shebang从#改为/usr/bin/python到#/usr/bin/env-python和不同的脚本。在所有情况下,他们的行为都是一样的。如有任何帮助,我们将不胜感激。我不想调用所有使用"python"格式的python脚本。

感谢以上建议的帮助,我找到了问题的解决方案。运行strace后,我发现代码挂在一个套接字连接上。在搜索相同的套接字连接信息时,我发现Stack Overflow上已经发布了另一个类似的问题。然后我发现第二个问题也非常相似。这两个问题都有相同的建议。显然,Python脚本与名为abrtd的服务冲突。建议重新启动此服务(abrtd)。重新启动后,Python脚本挂起的问题得到了解决。

最新更新