Перезапуск приложения linux с помощью респауна в inittab не работает

Сценарий:
У меня есть процесс, работающий на Linux, который запускается в фоновом режиме с помощью скрипта, подключенного в /etc/init.d/ называется как MyApp который является просто сценарием оболочки без .sh, Следующее мое init.d сценарий сценарий

#!/bin/sh

PARAM=$1

case ${PARAM} in
    start)
        MyApp &
        ;;
    stop)
        killall -9 MyApp
        ;;
    *)
        echo "Usage: $0 {start|stop}" >&2
        exit 1
        ;;
esac

Как вы можете видеть, это начинается MyApp на заднем фоне.

Цель и проблема:
Я хочу перезагрузить MyApp когда он падает. Я пытался выяснить, как это делается. Похоже, я должен добавить запись в /etc/inittab по разным ссылкам читаю. Поэтому я добавил следующую запись в /etc/inittab,

MyApp:12345:respawn:MyApp

Вопрос:
Выше, кажется, не работает, и как я могу заставить это работать правильно? Что плохого я здесь делаю?

Замечания:
Я делаю killall -9 MyApp и ожидая его перезагрузки из-за записи, которую я добавил в /etc/inittab, Это ожидание правильно?

2 ответа

case ${PARAM} in
    start)
        (while :; do MyApp ;done) &
        ;;

Этот ответ приходит довольно поздно, но ваш уникальный идентификатор в строке, которую вы написали, составляет 5 символов. Максимальная длина идентификатора должна быть 4.

Другие вопросы по тегам