我正在尝试启动一个依赖于网络的服务,每次重新启动计算机时都会启动该服务。我有几个问题:
这是否可以通过 /etc/init.d 脚本轻松实现?我曾尝试在此处创建一个脚本(符合标准),但我真的怀疑它在启动时是否能运行,更不用说正常工作了。当我手动测试它时,它可以正常工作。
我已经了解了新的 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