ждать выхода после ловушки - PullRequest
1 голос
/ 26 апреля 2019

Мне нужно обработать SIGTERM и продолжать работу скрипта.

#!/bin/bash
trap 'echo do-nothing' SIGTERM
sleep 10m &
wait $!

Почему после выхода из скрипта SIGTERM и как заставить его работать, пока sleep 10m & не будет завершен?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Сигнал всегда будет переводить точку выполнения из wait в trap и, очевидно, будет получен при следующем операторе, сломав wait.

Может быть, это?

#!/bin/bash
trap 'echo nope; wait $pid' term
sleep 10m & pid=$1
wait $pid
echo "Done - exited with code '$?'"
date
0 голосов
/ 26 апреля 2019

Решено с этим:

#!/bin/bash

trap 'echo SIGTERM' SIGTERM
sleep 1m &
echo waiting
wait $!
echo Got signal but still waiting
wait $!
echo bye

выход:

waiting
SIGTERM
Got signal but still waiting
bye

Он "проглотит" один сигнал SIGTERM и выйдет после завершения sleep 1m &.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...