Есть ли способ сказать, был ли сценарий оболочки убит сигналом 9

У меня есть сценарий bash (вызванный из java-программы), который продолжает убивать. Я всегда поймаю signal 15 trap но затем появляется другой сигнал, который, как я подозреваю, является signal 9 но я в основном ослеп, если это действительно signal 9 .

Я знаю, что вы не можете trap signal 9 , так есть ли другой способ, который я могу сказать, если signal 9 убивает мой сценарий оболочки?

Статус выхода убитой команды должен быть номером сигнала плюс 128. Таким образом, вы можете использовать статус выхода, чтобы узнать, какой сигнал вы убили.

Я протестировал его так на Linux в оболочке:

 print_exit_status_for_signal () { ( sleep 1000 echo Exit staus $? = signal $(( $? - 128 )) ) & sleep 1 killall "${1:+-$1}" sleep } print_exit_status_for_signal print_exit_status_for_signal 15 print_exit_status_for_signal 9 print_exit_status_for_signal KILL print_exit_status_for_signal TERM 

EDIT: Обратите внимание, что программа может решить выйти с любым значением¹ (так что вам нужно решить, насколько вы доверяете статусу выхода как эффект сигнала):

 for i in $(seq 256); do sh -c "exit $i" echo Program exited with $? done 

Сноска 1: В моих системах коды выхода представлены как 8-битные числа без знака, поэтому они обертываются при 256 = 0.