Как изящно остановить выполнение задания, когда оно убито в веб-интерфейсе Rundeck? - PullRequest
0 голосов
/ 18 мая 2018

Это тот же вопрос, что и Как изящно остановить выполнение задания при сбое одного шага в Rundeck? за исключением того, что я хочу изящно остановить задание, когда оно убито из веб-интерфейса пользователя.

У меня такая же работа, как и у другого автора вопроса: он выводит некоторые таблицы SQL;немного манипулировать свалками;загрузить их куда-нибудь;и очистка.

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

Я могу выполнить очистку при выходе (успех или ошибка) с помощью следующегов моем сценарии:

#!/bin/bash -ex
finish() {
  echo "remove dir $OUTPUT..."
  rm -Rf "$OUTPUT"
}
trap finish EXIT
# ... rest of the script ...

Однако этот шаг не выполняется, когда задание убивается из пользовательского интерфейса.Я копался в исходном коде Rundeck, и он, кажется, просто использует Thread#interrupt, который я, вероятно, не могу уловить.

Есть ли какое-либо решение этой проблемы?Прямо сейчас я должен ssh войти в узел и самостоятельно почистить вещи, когда убью работу.

...