Как я настраиваю без IP как надлежащий сервис?

В загрузке существует сервисный сценарий оболочки в качестве примера, но это кажется ограниченным и полагается killproc который не существует по умолчанию на Ubuntu 16 LTS.

4
задан 10 April 2017 в 21:14

2 ответа

Я использовал sysvinit руководство от Jonas Friedmann .

  1. Загрузка и untar DUC без IP:
    wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
    tar -xf noip-duc-linux.tar.gz --exclude='._*' (исключает Mac dotfiles)
  2. Делают и устанавливают его:
    cd noip-x.y (где x.y является версией)
    make (ошибки здесь могут означать, что Вы пропускаете пакеты компиляции)
    sudo make install
  3. Создают файл /etc/init.d/noip с этим содержанием:

    #!/bin/sh
    
    ### BEGIN INIT INFO
    # Provides:          noip
    # Required-Start:    $local_fs $network $syslog
    # Required-Stop:     $local_fs $network $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: no-ip DUC
    # Description:       Update DNS for dynamic IP on noip.com
    ### END INIT INFO
    
    NAME="noip"
    PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
    APPDIR="/"
    APPBIN="/usr/local/bin/noip2"
    PIDFILE="/var/run/${NAME}-customservice.pid"
    
    # Include functions 
    set -e
    . /lib/lsb/init-functions
    
    start() {
        printf "Starting '$NAME'... "
        start-stop-daemon --start --background --make-pidfile --pidfile "$PIDFILE" --chdir "$APPDIR" --exec "$APPBIN" || true
        printf "done\n"
    }
    
    #We need this function to ensure the whole process tree will be killed
    killtree() {
        local _pid=$1
        local _sig=${2-TERM}
        for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
            killtree ${_child} ${_sig}
        done
        kill -${_sig} ${_pid}
    }
    
    stop() {
        printf "Stopping '$NAME'... "
        [ -z `cat "$PIDFILE" 2>/dev/null` ] || \
            while test -d /proc/$(cat "$PIDFILE"); do
                killtree $(cat "$PIDFILE") 15
                sleep 0.5
            done 
        [ -z `cat "$PIDFILE" 2>/dev/null` ] || rm "$PIDFILE"
        printf "done\n"
    }
    
    status() {
        "$APPBIN" -S
    }
    
    configure() {
        "$APPBIN" -C
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        status)
            status
            ;;
        configure)
            configure
            ;;
        *)
            echo "Usage: $NAME {start|stop|restart|status|configure}" >&2
            exit 1
            ;;
    esac
    
    exit 0
    

    (я использовал sudo vim /etc/init.d/noip.)

  4. Делают это исполняемым файлом:
    sudo chmod a+x /etc/init.d/noip
  5. Включают его:
    sudo update-rc.d noip defaults
  6. Настраивают его:
    sudo service noip configure
  7. Запускают его:
    sudo service noip start
  8. Проверка это:
    sudo service noip status

Обратная связь приветствуется.

3
ответ дан 23 November 2019 в 11:39

Ubuntu 16 использование LTS systemd как init система. Это предполагает, что Вы уже загрузили и установили noip2 клиент обновления.

  1. Создайте файл /etc/systemd/system/noip2.service следующим образом:

    [Unit]
    Description=No-Ip Dynamic DNS Update Service
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/noip2
    
    [Install]
    WantedBy=multi-user.target
    
  2. Перезагрузите init демона:

    sudo systemctl daemon-reload
    
  3. Включите сервис:

    sudo systemctl enable noip2
    
  4. Запустите сервис:

    sudo systemctl start noip2
    

Полученный из этого readme

10
ответ дан 23 November 2019 в 11:39

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

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