簡體   English   中英

發生分段故障時停止linux bash腳本

[英]Stop linux bash script when segmentation fault occurs

如果在linux bash腳本中調用程序導致段錯誤,可能會引起注意,可能會停止腳本呢?

如果程序退出時出現分段錯誤或任何其他錯誤,則它將以非零退出代碼退出。 您可以測試此退出代碼,並在執行此操作時退出腳本。 如果要停止任何錯誤(不僅僅是分段錯誤),您可以使用:

some-crashy-program args || exit 1

如果您想要退出腳本,如果您調用的任何程序返回錯誤(作為ifwhile語句的一部分除外),您只需在腳本開頭調用set -e ,以使腳本立即退出如果任何命令失敗。 在需要隨時間維護的較大腳本中有些不鼓勵這種用法,因為如果像grep東西返回非零退出代碼,它可能導致您的腳本在意外時間退出,但它對於快速一次性有用很有用腳本,如果您知道您總是希望停止出錯。

如果您只想在程序崩潰時出現段錯誤,而不是任何其他錯誤,則可以檢查特定的退出代碼。 在大多數系統上, SEGV值為11,但您可以查看:

$ kill -l SEGV
11

然后添加128,這將是您的程序退出的退出代碼。 測試退出代碼,以確定您的程序是否與SIGSEGV崩潰:

some-crashy-program args
if [ $? -eq 139 ]; then
    echo "It crashed!"
    exit 1
fi

分段錯誤將導致139作為返回碼。

您可以檢查返回代碼,如下所示:

run_your_thing
if [[ $? -eq 139 ]]; then echo "oops, sigsegv"; fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM