我想用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
所以我的问题是:
编辑:其他信息
Linux debian 3.2.0-3-amd64 #1 SMP Thu Jun 28 09:07:26 UTC 2012 x86_64 GNU/Linux
zsh 4.3.17 (x86_64-unknown-linux-gnu)
2.0.1
Python 2.7.3rc2
答案 0 :(得分:1)
状态137表示他已经被信号9(137 = 128 + 9)杀死,这是一个不可阻挡的终止信号。 它不一定是您找到的原因(时间限制)。
如果您的脚本频繁启动某个进程,可能在2.5小时后达到maxproc限制?
也许它需要太多的记忆和oomkiller开始?定期检查free -m
的输出。
在启动程序之前尝试使用ulimit -c unlimited
。