Принудительно завершить процесс с кодом выхода 0.

Искусство написания bash скриптов. Делимся своими наработками
Ответить
Аватара пользователя
ZEN
Администратор
Сообщения: 1379
Зарегистрирован: 27 сен 2012, 18:23
Темы: 216
Откуда: Украина, Одесса
Статус: Не в сети

Принудительно завершить процесс с кодом выхода 0.

Сообщение ZEN » 01 фев 2018, 13:34

Сложилась ситуация, когда в Jenkins запущено несколько параллельных заданий и если убить один процесс, остальные завершатся с статусом 'failed'. Так, как скрипты тяжелые и бегут по несколько дней, стала задачи прибить один проблемный без остановки других. Jenkins ориентируется на код выхода приложения. Если код не нулевой, значит приложение завершилось с ошибкой. Решение нашлось на serverfault. Суть метода заключается в том, что бы подключиться к процессу с помощью gdb и вызвать системную функцию exit:

Код: Выделить всё

gdb -p <process id>
....
.... Gdb output clipped
(gdb) call exit(0)

Program exited normally.
А так же, предложен враиант однострочника:

Код: Выделить всё

gdb --batch --eval-command 'call exit(0)' --pid <process id>
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей