为什么 update-rc.d 不接受我的初始化脚本

为什么 update-rc.d 不接受我的初始化脚本

我想noip.com在启动时启动 dyndns 客户端,并使用提供的 debian.noip2.sh 脚本(它可以从 shell 正常启动客户端)。我将其复制到/etc/init.d,使其归 root 所有并授予其755权限。现在,当我想安装它时,我得到:

# update-rc.d debian.noip2.sh defaults
insserv: warning: script 'K01debian.noip2.sh' missing LSB tags and overrides
insserv: warning: script 'debian.noip2.sh' missing LSB tags and overrides
insserv: warning: script 'noip' missing LSB tags and overrides
insserv: script virtualbox: service vboxdrv already provided!
insserv: script virtualbox: service virtualbox already provided!

脚本如下:

# cat /etc/init.d/debian.noip2.sh 
#! /bin/sh
# /etc/init.d/noip2.sh

# Supplied by no-ip.com
# Modified for Debian GNU/Linux by Eivind L. Rygge <[email protected]>
# corrected 1-17-2004 by Alex Docauer <[email protected]>

# . /etc/rc.d/init.d/functions  # uncomment/modify for your killproc

DAEMON=/usr/local/bin/noip2
NAME=noip2

test -x $DAEMON || exit 0

case "$1" in
    start)
    echo -n "Starting dynamic address update: "
    start-stop-daemon --start --exec $DAEMON
    echo "noip2."
    ;;
    stop)
    echo -n "Shutting down dynamic address update:"
    start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON
    echo "noip2."
    ;;

    restart)
    echo -n "Restarting dynamic address update: "
    start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON
    start-stop-daemon --start --exec $DAEMON
    echo "noip2."
    ;;

    *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
exit 0

我该如何修复这个问题?

答案1

我该如何修复这个问题?

把它彻底扔掉。你不需要它的任何形式。

那么就不要再尝试使用rcUbuntu 上已经被两次取代的系统了。你也不需要update-rc.d在这里。

现在是 2016 年,迁移到 systemd 的第一条规则适用。有人已经这样做了。在这个特定情况下,迈克尔·尼基托奇金 (Michael Nikitochkin) 一年前就做到了其中包括(例如杰伦·道根糖化白细胞介素, 和一些无名的人):

[单元]
描述=NOIP 动态 IP
文档=https://askubuntu.com/a/835318/43344

[服务]
ExecStart=/usr/local/bin/noip2

[安装]
WantedBy=多用户.目标

进一步阅读

答案2

首先,您需要创建一个 systemd 启动脚本:

debian.noip2.service

并将其放入/etc/systemd/system/目录中。

此类 systemd 启动脚本的一个示例如下:

[Unit]
After=network.target

[Service]
ExecStart=/usr/local/bin/debian.noip2.sh

[Install]
WantedBy=default.target

After:指示 systemd 何时运行脚本。在我们的例子中,脚本将在网络启动后运行。

ExecStart:此字段提供要执行的实际脚本的完整路径。

WantedBy:systemd 单元应安装到哪个启动目标中

配置和安装:

打开终端并运行:

exec sudo -i
cp debian.noip2.sh /usr/local/bin/
chmod 744 /usr/local/bin/debian.noip2.sh
chmod 664 /etc/systemd/system/debian.noip2.service
systemctl daemon-reload
systemctl enable debian.noip2.service

来源

相关内容