【问题标题】:Why does my Perl script exit with 137?为什么我的 Perl 脚本以 137 退出?
【发布时间】:2010-11-05 16:27:16
【问题描述】:

有没有办法消除 perl 中的警告(退出代码 137)?我在另一个 shell 脚本中在 linux 上运行 Perl 脚本。此 Perl 脚本以警告和退出代码 137 退出。我无法确定退出代码 137 代表什么。

避免此警告的最佳方法是什么?我在脚本中尝试了“无警告”,并且在我的 Perl 脚本末尾也有一个退出 0。

【问题讨论】:

  • 你的脚本在哪里退出?你真的看到警告了吗?
  • 发布相关代码块可能会有所帮助。
  • 我不确定如何确定脚本的退出位置。它似乎做得很好(因为我的输出是正确的)但以 137 退出。我执行 echo $status 以查看退出代码。
  • 如果您希望人们能够帮助您,您至少必须显示调用 perl 脚本的 shell 脚本部分并显示输出的“警告”。 (只需编辑您的问题并将这些内容添加到其中。)
  • What does 'killed' mean?的可能重复

标签: perl exit-code


【解决方案1】:

137=128+9,表示其他进程向您发送了信号 9,即 SIGKILL。 IE。另一个脚本杀死了你的,这就是它的样子。

【讨论】:

  • 不完全是因为独立运行脚本也会吐出 137。谢谢。
  • 也有可能是它自己发送了信号。
  • 杀死它的是 oomkiller 进程——而不是其他脚本。
  • 在 Linux 上,检查 dmesg 输出以查看是否是 OOM Killer。
  • 您能否详细说明为什么您的答案中有“128”?这是一个已知的数字,从那里递增吗?
【解决方案2】:

我怀疑退出警告是由调用 perl 程序的 shell 打印出来的,而不是由 perl 程序本身打印出来的,所以 perl 代码中的“无警告”对你没有帮助。退出代码 137 表示它被 SIGKILL 信号杀死。

【讨论】:

    【解决方案3】:

    我在启动 python 脚本时遇到了相同的退出代码 137。 原来是 OOM 杀手介入,将 SIGKILL 发送到 python 解释器。 如果是同样的原因,你可以在 /var/log/messages 中找到 oom msgs

    【讨论】:

    • oom_reaper 消息也在dmesg.
    【解决方案4】:

    我从 ANT 脚本中得到了相同的错误代码 137。查看/var/log/messages,我知道这是内存不足错误。

    Jun 21 07:33:30 myhost kernel: Out of memory: Kill process 52959 (java) score 164 or sacrifice child
    Jun 21 07:33:30 myhost kernel: Killed process 52959 (java) total-vm:709496kB, anon-rss:397016kB, file-rss:0kB
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多