В загрузке существует сервисный сценарий оболочки в качестве примера, но это кажется ограниченным и полагается killproc
который не существует по умолчанию на Ubuntu 16 LTS.
Я использовал sysvinit
руководство от Jonas Friedmann .
wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar -xf noip-duc-linux.tar.gz --exclude='._*'
(исключает Mac dotfiles) cd noip-x.y
(где x.y является версией) make
(ошибки здесь могут означать, что Вы пропускаете пакеты компиляции) sudo make install
Создают файл /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
.)
sudo chmod a+x /etc/init.d/noip
sudo update-rc.d noip defaults
sudo service noip configure
sudo service noip start
sudo service noip status
Обратная связь приветствуется.
Ubuntu 16 использование LTS systemd
как init система. Это предполагает, что Вы уже загрузили и установили noip2
клиент обновления.
Создайте файл /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
Перезагрузите init демона:
sudo systemctl daemon-reload
Включите сервис:
sudo systemctl enable noip2
Запустите сервис:
sudo systemctl start noip2
Полученный из этого readme