在 Ubuntu 上网络准备就绪后运行服务吗?

在 Ubuntu 上网络准备就绪后运行服务吗?

我正在尝试启动一个依赖于网络的服务,每次重新启动计算机时都会启动该服务。我有几个问题:

  1. 这是否可以通过 /etc/init.d 脚本轻松实现?我曾尝试在此处创建一个脚本(符合标准),但我真的怀疑它在启动时是否能运行,更不用说正常工作了。当我手动测试它时,它可以正常工作。

  2. 我已经了解了新的 Upstart 服务,但对于它的实际工作原理,我却一无所知。

如何制作一个在启动时运行的脚本,该脚本在网络启动后运行?如果我可以在连接到无线网络后运行它,那就更好了 :)

答案1

您可以使用文件/etc/init作为模型。例如,这是/etc/init/mountall-net.conf

# mountall-net - Mount network filesystems
#
# Send mountall the USR1 signal to inform it to try network filesystems
# again.

description     "Mount network filesystems"

start on net-device-up

task

script
    PID=$(status mountall 2>/dev/null | sed -e '/,/{s/.*,[^0-9]*//;q};d')
    [ -n "$PID" ] && kill -USR1 $PID || true
end script

这是'/etc/init/ufw.conf`:

# ufw - Uncomplicated Firewall
#
# The Uncomplicated Firewall is a front-end for iptables, to make managing a
# Netfilter firewall easier.

description     "Uncomplicated firewall"

start on net-device-added INTERFACE=lo
stop on runlevel [!023456]

console output

pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop

后一个文件在中有一个符号链接/etc/init.d

$ ls -l /etc/init.d/ufw
lrwxrwxrwx 1 root root 21 2009-11-05 00:14 /etc/init.d/ufw -> /lib/init/upstart-job

答案2

相关内容