1

我想用 NLTK 的 Brill-Tagger 标记一些文本。但是,脚本会像这样退出:

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

谷歌搜索退出代码 137 只显示 bash 有一个退出代码 137 这意味着

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

当我通过调用 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
  • Zshzsh 4.3.17 (x86_64-unknown-linux-gnu)
  • NLTK2.0.1
  • 蟒蛇Python 2.7.3rc2
4

1 回答 1

1

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

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

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

于 2012-08-22T12:40:11.180 回答