下载中有一个示例服务 shell 脚本,但它似乎有限并且依赖于killproc
Ubuntu 16 LTS 上默认不存在的脚本。
答案1
Ubuntu 16 LTS 使用systemd
作为初始化系统。这假设您已经下载并安装了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
源自本自述文件
答案2
我用的是sysvinit
乔纳斯·弗里德曼 (Jonas Friedmann) 的指南。
- 下载并解压 No-IP DUC:(
wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar -xf noip-duc-linux.tar.gz --exclude='._*'
不包括 Mac 点文件) - 制作并安装它:(
cd noip-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
欢迎反馈。