android — Автоматический перезапуск консольного приложения linux

Я использую Raspberry PI для автоматизации моего устройства. Мне нужно мое консольное приложение (написанное на C ++) на Raspberry, чтобы работать без человека годами. Поэтому я настроил сторожевой таймер для перезагрузки каждый день и запускаю приложение в автозапуске.

Но мое приложение может зависнуть. Я не могу раскрыть причину, и мне нужно быстро ее перезапустить. Какой способ будет лучшим? Может быть, я мог бы написать «родительский» -app, и вызвать my как нить в нем, и контролировать его работу (но он тоже мог аварийно завершить работу)? Или, может быть, существует существующий демон для этого? Или, может быть, кто-то знает, как написать приложение Phyton для этого и запустить его при запуске?

0

Решение

Не обязательно отвечать на вопрос, но я думаю, что лучше использовать проверенную утилиту, такую ​​как «cron», для планирования ежедневной перезагрузки.

0

Другие решения

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

while true; do /bin/my_app; done

Тем не менее, весь этот подход не поможет, если приложение каким-то образом завершится с ошибкой, не считая остановки процесса. Обычный подход в подобных ситуациях заключается в предоставлении приложению некоторой внешней точки доступа (например, HTTP-сервера), которую можно исследовать. Затем какой-то другой процесс регулярно проверяет зонд и убивает программу, если она не отвечает своевременно. Для такого рода вещей есть несколько очень сложных структур, но, опять же, простые функциональные возможности этого типа могут быть реализованы только с помощью сценариев оболочки.

0