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

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

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

  • Самый простой способ переупорядочить столбцы и управлять текстовым файлом
  • Простая эффективная конкатенация файлов CSV
  • Автоматически вводить пароль SSH без использования SSH-ключа, «ожидать», «sshpass» или Python
  • сценарий оболочки заменяет только первую строку в переменной
  • Как получить 5 лучших приложений для интенсивной работы с Bash?
  • Многопоточность / Викинг в сценарии bash
  • scp при попытке скопировать файлы из Linux в windows
  • Переименование файлов в зависимости от их родительского каталога
  • One Solution collect form web for “Есть ли способ сказать, был ли сценарий оболочки убит сигналом 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.

    Interesting Posts

    Как подсчитать количество активных окон, открытых отдельно от оконного менеджера?

    Найти каталоги и файлы с разрешениями, отличными от 775/664

    понять параметр «-netdev» в qemu

    Как определить путь ffmpeg при компиляции другого программного обеспечения?

    Любой ассемблер x86-64 Linux?

    Есть ли способ автоматического включения Ubuntu?

    конвертировать временную метку unix на сегодняшний день в оболочку Android

    В systemd, что запускает единицы, сгенерированные генератором?

    Прочитайте другую память процессов, используя ptrace () в C / CPP

    Беспроводная индикаторная лампа мигает для работы на клавиатуре ноутбука

    Как ЦП знает, какой физический адрес сопоставляется с каким виртуальным адресом?

    Каков правильный способ расширения этих строк bash в правильные команды Git?

    Не удается прослушивать эфемерный порт tcp

    Как скрыть пароли в команде 'watch'?

    Один ПК, несколько пользователей, Gnome 3 и Awesome. Как легко переключаться между пользователями через GDM

    Linux и Unix - лучшая ОС в мире.