Я написал небольшой скрипт на python, который я запускаю как LaunchDaemon для записи времени запуска / завершения работы в удаленной базе данных.Когда скрипт запускается, он записывает время запуска, затем делает паузу и ждет, чтобы поймать SIGTERM, чтобы записать время выключения.Почти идентичный рабочий процесс используется в качестве LaunchAgent для времени входа / выхода из системы.
Однако, похоже, что механизм внезапного завершения работы Apple бросает рывок в вещи.Похоже, что когда машина выключена или перезапущена, launchd
отправляет только сигнал SIGKILL
запускающим демонам и агентам запуска, которые не могут быть обработаны.Я могу ошибаться в технических деталях, но по сути это то, что я испытываю ..
Ручная загрузка / выгрузка демона с помощью launchctl запускает обработчик SIGTERM
.Тем не менее, тот же код не срабатывает при реальном выключении системы.
У кого-нибудь есть рекомендации по предотвращению SIGKILL
?