ловушка в скрипте оболочки freestyle не работает в jenkins

ловушка в скрипте оболочки freestyle не работает в jenkins

Я хочуизящныйубийство моей работы Jenkins, если кто-то ее прерывает, поэтому я попытался перехватить сигнал прерывания и настроить шаг убийства с помощью скрипта оболочки.
Но похоже, что Jenkins игнорирует все ловушки и принудительно убивает в любом случае
пример сценария для тестирования

exit_script() {
    echo "Printing something special!"
    echo "traped &  killed " >>text.txt
    echo "Maybe executing other commands!"
    trap - INT TERM ABRT  QUIT HUP # clear the trap
    kill -- -$$ # Sends SIGTERM to child/sub processes
}

trap 'exit_script' INT KILL ABRT QUIT HUP

echo "pid is $$"
echo "pid is $$" > test.txt
count=0
sleep 10
echo 1
echo 1 >>test.txt
sleep 10
echo 2
echo 2 >>test.txt
sleep 10
echo 3
echo 3 >>test.txt
sleep 10
echo 4
echo 4 >>test.txt
sleep 10
echo 5
echo 5 >>test.txt
sleep 10
echo 6
echo 6 >>test.txt
exit 0

Я ищу, как мы можем пойматьСИГТЕРМсигнал и настройка команды kill в jenkins.

К вашему сведению: этот скрипт отлично работает в моей системе bash, нужно только изменить INT->SIGINT и так далее.

решение1

Я думаю, что он работает нормально, просто нужно внести несколько исправлений. Если есть какие-либо проблемы с функцией, связанной с ловушкой, то exit_script()он не будет работать.

Я проверил это, удалив, kill -- -$$и все работает нормально, функция вызывается, и процесс продолжает выполняться.

решение2

В общем случае в скрипте оболочки вы перехватываете сигнал SIGTERM, говоря:

trap 'exit_script' TERM

P.S. Перехват KILL не работает, и двойной ввод QUIT не помогает.

Связанный контент