2009-06-24 25 views
31

有沒有辦法在Perl中消除警告(退出代碼137)?我正在另一個shell腳本中的Linux上運行Perl腳本。這個Perl腳本退出,並帶有警告和退出代碼137.我無法確定退出代碼137代表什麼。爲什麼我的Perl腳本以137退出?

什麼是避免這種警告的最佳方式?我在腳本中嘗試了「沒有警告」,並且在Perl腳本的末尾也有一個0退出。

+1

哪裏你的腳本退出?你真的看到警告了嗎? – 2009-06-24 22:16:53

+2

它可能有助於發佈相關的代碼塊。 – Telemachus 2009-06-24 22:20:30

+0

我不知道如何找出腳本在哪裏退出。它似乎很好地完成了它的工作(因爲我的輸出是正確的),但是以137退出。我使用echo $ status來查看退出代碼。 – 2009-06-24 22:20:30

回答

57

137 = 128 + 9,這意味着一些其它過程已向您發送信號9,它是SIGKILL。即另一個腳本會殺死你的,這就是它的樣子。

4

我懷疑退出警告是由所謂的perl程序,而不是由Perl程序本身的外殼打印出來,所以在Perl代碼「沒有警告」不會幫助你。退出碼137意味着它被SIGKILL信號殺死。

40

推出一個python腳本時,我只是碰到了相同的退出代碼137。 原來是OOM殺手踢,發送SIGKILL到python解釋器。 如果是同一個原因,你可以在/ var/log/messages中找到oom消息

6

我從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 
相關問題