NLTK Brill-Tagger在2.5小时后退出,退出代码为137.出了什么问题?

时间:2012-08-21 11:09:20

标签: python zsh nltk

我想用NLTK的Brill-Tagger标记一些文字。但是,脚本退出如下:

$ ./brill.py
Training Brill tagger on 43005 sentences...
Finding initial useful rules...
zsh: killed     ./brill.py                                  137

Google搜索退出代码137只显示bash有退出代码137,表示

Exit code 137: The job was killed because it exceeded the time limit.

当我通过调用限制检查限制时,我得到以下输出,我猜退出代码不等同:

$ limit
cputime         unlimited
filesize        unlimited
datasize        unlimited
stacksize       8MB
coredumpsize    0kB
memoryuse       unlimited
maxproc         30973
descriptors     1024
memorylocked    64kB
addressspace    unlimited
maxfilelocks    unlimited
sigpending      30973
msgqueue        819200
nice            0
rt_priority     0
rt_time         unlimited

另一件事是脚本只运行了两个半小时:

$ date && while [1];do if [[ -z `ps -C brill.py | grep brill.py` ]]; then; date;break;fi;done
Mo 20. Aug 19:54:52 CEST 2012
Mo 20. Aug 22:30:40 CEST 2012

所以我的问题是:

  • zsh退出代码在哪里记录?
  • 137是什么意思?
  • 如何让这个过程保持活力?

编辑:其他信息

  • 操作系统:与Gnome的Debian:Linux debian 3.2.0-3-amd64 #1 SMP Thu Jun 28 09:07:26 UTC 2012 x86_64 GNU/Linux
  • Zsh zsh 4.3.17 (x86_64-unknown-linux-gnu)
  • NLTK 2.0.1
  • Python Python 2.7.3rc2

1 个答案:

答案 0 :(得分:1)

状态137表示他已经被信号9(137 = 128 + 9)杀死,这是一个不可阻挡的终止信号。 它不一定是您找到的原因(时间限制)。

如果您的脚本频繁启动某个进程,可能在2.5小时后达到maxproc限制? 也许它需要太多的记忆和oomkiller开始?定期检查free -m的输出。

在启动程序之前尝试使用ulimit -c unlimited