Как я уничтожаю фоновые процессы / задания, когда мой сценарий оболочки выходит?

Во-первых, в вашем примере выше / books? author_id = 42 не успокаивает imo (некоторые религиозные дискуссии, несомненно, будут иметь место). / books / 42 будет «получить мне книгу с id = 42». Вместо этого API должен принимать параметры фильтра из тела запроса в качестве критериев выбора. / books будут включать ВСЕ книги, которые соответствуют встроенным критериям фильтрации, возможность нулевой коллекции.

Если вы хотите, API также может проверить, действительны ли некоторые критерии фильтрации (автора) и возвращать 404, если автор не существует. Это решение API, пользовательский интерфейс только знает, как с ним разговаривать и обрабатывать результат.

Обратите внимание, что именно я предсказал? Религиозная дискуссия вместе с обложками. Прочитайте работу Роя Филдинга и разработку Леонарда Ричардсона.

173
задан user513951 10 December 2015 в 00:35
поделиться

4 ответа

Очищать некоторую путаницу, trap может использоваться. Это может предоставить список материала, выполняемого, когда определенный сигнал прибывает:

trap "echo hello" SIGINT

, но может также использоваться для выполнения чего-то, если оболочка выходит:

trap "killall background" EXIT

Это - встроенное, таким образом help trap даст Вам информацию (работы с ударом). Если Вы только хотите уничтожить фоновые задания, можно сделать

trap 'kill $(jobs -p)' EXIT

, Предостерегаются, чтобы использовать единственный ', препятствовать тому, чтобы оболочка заняла место $() сразу.

166
ответ дан Johannes Schaub - litb 23 November 2019 в 20:34
поделиться

Другая опция - он, чтобы установить сценарий сам как лидера группы процесса и захватить killpg на Вашей группе процесса на выходе.

1
ответ дан orip 23 November 2019 в 20:34
поделиться

Так напишите сценарий загрузки сценария. Работайте killall (или независимо от того, что доступно на Вашей ОС), команда, которая выполняется, как только сценарий закончен.

0
ответ дан Oli 23 November 2019 в 20:34
поделиться

Это работает на меня (улучшено благодаря комментариям):

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
  • kill -- -$$ посылает SIGTERM во всю группу процессов, таким образом убивая и потомков.

  • Указание сигнала EXIT полезно при использовании набора -e (подробнее здесь).

154
ответ дан 23 November 2019 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: