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

もう1つは、スクリプトが2時間半ほどしか実行されないことです。

$ 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はどういう意味ですか?
  • このプロセスを存続させるにはどうすればよいですか?

編集:追加情報

  • OS: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
  • PythonPython 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 に答える