Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Добрый день, уважаемые господа.

1. TorrServer имеет тенденцию часто падать, написал watchdog скрипт, не без помощи нейросетей. Сам скрипт работает, если запустить его из терминала руками, но не запускается автоматически при ребуте.

2. Скрипт лежит в /opt/etc/init.d/ с именем S95torrserver

2.1 Я пробовал закидывать его в хуки ndm, но он все равно не работает автоматически

3. Я не очень хочу использовать ext-ui, так как там крутится куча всего ненужного, но я все равно попробовал - в webui показывается, что скрипт должен загружаться автоматически, но этого не происходит.

К сожалению, не хватает знаний, чтобы понять что не так и как сделать автозапуск при ребуте.

 

#!/bin/sh

NAME="torrserver"
DAEMON="/opt/sbin/torrserver"
PIDFILE="/var/run/${NAME}.pid"
WATCHDOG_PIDFILE="/var/run/${NAME}_watchdog.pid"

# Create /var/run if missing
[ -d /var/run ] || mkdir -p /var/run

# TorrServer options (if needed)
TORRSERVER_OPTS=""

start_daemon() {
    echo "Starting $NAME..."
    $DAEMON $TORRSERVER_OPTS >/dev/null 2>&1 &
    TORR_PID=$!
    echo $TORR_PID > "$PIDFILE"
    echo "$NAME started with PID $TORR_PID"
}

start_watchdog() {
    (
        while true; do
            if [ -f "$PIDFILE" ]; then
                PID=$(cat "$PIDFILE")
                if ! kill -0 "$PID" 2>/dev/null; then
                    echo "Watchdog: $NAME (PID: $PID) not running, restarting..."
                    start_daemon
                fi
            else
                echo "Watchdog: PID file missing, starting $NAME..."
                start_daemon
            fi
            sleep 5
        done
    ) &
    WATCHDOG_PID=$!
    echo $WATCHDOG_PID > "$WATCHDOG_PIDFILE"
    echo "Watchdog started (PID: $WATCHDOG_PID)"
}

stop_watchdog() {
    if [ -f "$WATCHDOG_PIDFILE" ]; then
        WD_PID=$(cat "$WATCHDOG_PIDFILE")
        echo "Stopping watchdog (PID: $WD_PID)..."
        kill "$WD_PID" 2>/dev/null
        rm -f "$WATCHDOG_PIDFILE"
    fi
    killall S95torrserver 2>/dev/null
}

stop_daemon() {
    if [ -f "$PIDFILE" ]; then
        PID=$(cat "$PIDFILE")
        echo "Stopping $NAME (PID: $PID)..."
        kill "$PID" 2>/dev/null
        rm -f "$PIDFILE"
        echo "$NAME stopped"
    else
        echo "$NAME not running"
    fi
}

start() {
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        echo "$NAME already running (PID: $(cat $PIDFILE))"
        return 1
    fi
    start_daemon
    start_watchdog
}

stop() {
    echo "Stopping $NAME service..."
    stop_watchdog
    stop_daemon
}

restart() {
    stop
    sleep 2
    start
}

status() {
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        echo "$NAME running (PID: $(cat $PIDFILE))"
    else
        echo "$NAME not running"
    fi

    if [ -f "$WATCHDOG_PIDFILE" ] && kill -0 "$(cat "$WATCHDOG_PIDFILE")" 2>/dev/null; then
        echo "Watchdog running (PID: $(cat $WATCHDOG_PIDFILE))"
    else
        echo "Watchdog not running"
    fi
}

case "$1" in
    start) start ;;
    stop) stop ;;
    restart) restart ;;
    status) status ;;
    *) echo "Usage: $0 {start|stop|restart|status}" ;;
esac

exit 0

 

Опубликовано

Вам проще watchdog просто в cron на раз в минуту поставить.

Скрпиты в ndm неправильно делать длящимися, они через 240 секунд принудительно завершаются.

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.