qzeleza / kvas

vpn и shadowsocks клиент для роутеров keenetic
Other
306 stars 26 forks source link

Надежный перезапуск adguard #131

Closed badigit closed 1 month ago

badigit commented 1 month ago

Опишите проблему. После некоторой эксплуатации, заметил что возможен кейс когда adguard намертво зависает. Причины не понятны, но зависает прям очень крепко не работает DNS, не работает веб-морда, не пишется ничего в лог adh /opt/etc/init.d/S99adguardhome status показывает alive /opt/etc/init.d/S99adguardhome stop\restart выдает failed

Единственный рабочий вариант завершение процесса через- kill -9 После этого все успешно поднимается и работает

Моё предложение -

  1. учесть в rc.func через 1 секунду проверку завершился ли процесс, если нет - завершать принудительно
stop() {
    case "$ACTION" in
        stop | restart)
            echo -e -n "$ansi_white Shutting down $PROC... $ansi_std"
            killall $PROC 2>/dev/null
            COUNTER=0
            LIMIT=10
            while [ -n "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do
                sleep 1;
                COUNTER=$((COUNTER + 1))
            done

            # Принудительное завершение, если процесс все еще работает
            if [ -n "`pidof $PROC`" ]; then
                echo -e -n "$ansi_white Forcing shutdown of $PROC... $ansi_std"
                killall -9 $PROC 2>/dev/null
                COUNTER=0
                while [ -n "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do
                    sleep 1;
                    COUNTER=$((COUNTER + 1))
                done
            fi
            ;;
        kill)
            echo -e -n "$ansi_white Killing $PROC... $ansi_std"
            killall -9 $PROC 2>/dev/null
            ;;
    esac

    if [ -n "`pidof $PROC`" ]; then
        echo -e "            $ansi_red failed. $ansi_std"
        return 255
    else
        echo -e "            $ansi_green done. $ansi_std"
        return 0
    fi
}
qzeleza commented 1 month ago

Доброго дня

Предложение дельное, но как оно относится к Квасу? Это ближе к самому ADGH или к Entware.

Менять системные файлы - не самая лучшая затея, без одобрения разработчиков системы.