Как поддерживать графическое приложение в рабочем состоянии, даже если оно отказывает?

Я использую Gnome, Делают как средство запуска для большинства вещей. У меня есть он набор для работы входа в систему, и большую часть времени это находится, в фоновом режиме ожидая меня для приготовления пюре из сочетания клавиш. Об один раз в неделю, это падает. Я делаю пюре из своего ярлыка, и ничего не происходит. Я должен повторно запустить его.

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

Я знаю, что некоторые приложения делают это. На Gnome2, если панель гнома не работает, система вынуждает ее загрузиться. Есть ли простой способ насладиться этой логикой (конечно, не повреждая Gnome).

Я не хочу этот вопрос быть слишком характерным для Gnome, Делают или даже Gnome, потому что у меня есть больше чем одно приложение для решения (я запускаю Boxee на рабочем столе OpenBox на нашем медиа-центре), и я уверен другие люди, у всех есть их собственные проблемы, которые они хотели бы устранить через что-то вроде этого.

4
задан 6 June 2011 в 15:20

2 ответа

Другой не так изящное решение:

#!/bin/bash

threshold=2
program="$1"

while true; do
    start=$(date +%s)
    "$program"
    ret_val=$?
    stop=$(date +%s)
    if [[ ret_val -eq 0 ]]; then
        # normal exit, quit
        exit 0
    else
        # abnormal exit, check runtime. if < threshold quit
        runtime=$((stop - start))
        if [[ runtime -lt $threshold ]]; then
            echo "crash on start"
            exit 1       
        fi
    fi
done

Это перезапустит, если программа (первый аргумент) выйдет с кодом возврата! = 0 и выполнил, по крайней мере, пороговые секунды.

Я пытался создать Новомодное задание с помощью переикры и предельных опций переикры, но этого так или иначе отказавшего.

2
ответ дан 1 December 2019 в 10:28

Простое, если бы не особенно изящный, решение состояло бы в том, чтобы запустить приложение из сценария на цикле, таком что

#!/bin/bash

while true
 do
    gnome-do # or application of choice
    sleep 10 # prevent super-spawn rates
done

Хотя это, вероятно, придется проверить на приложение, поскольку удар не останавливается для всех программ...

Вы могли также адаптировать его для проверки на errorcodes, таким образом, это только повторно мечет икру если сбои приложения, а не закрытый.

0
ответ дан 1 December 2019 в 10:28

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

Похожие вопросы: