LINUX.ORG.RU

Systemd как при завершении сервиса послать питон скрипту сигнал о завершении работы?

 ,


1

1

Есть скрипт на питоне. Правильно завершается он так

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "Ctrl+C captured, ending read."
    GPIO.cleanup();

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

Когда я сделал сервис systemd, то при

systemctl stop my_cool.service
скрипт на питоне просто падает, а не выключается правильно. Как из systemd сервиса правильно послать сигнал скрипту о завершении работы?


Ответ на: комментарий от deep-purple

Т.е. мне нужно дописать что-то, вроде

signal.signal(signal.SIGKILL, end_read)

?

denko
() автор топика

SIGTERM по дефолту присылается, желательно поддерживать хотя бы SIGTERM и SIGINT для удобства

anonymous
()
Ответ на: комментарий от slovazap

Правильно будет ловить в скрипте SIGTERM наряду с SIGINT.

SIGTERM не отловился, так что оставил только SIGINT

denko
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.