我正在将当前的服务器设置迁移到较新的硬件,并从 ubuntu karmic koala 迁移到 lucid lynx。目前,我正在使用 gw6c(从 gogo6 网站编译,而不是来自存储库的版本)来获取系统的 ipv6 访问权限。在 karmic koala 系统上,我使用简单的 init.d 脚本来启动 ipv6 客户端
#! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
我想既然它可以在任何运行级别运行,它应该转换为
respawn
console none
start on startup
stop on shutdown
script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script
从 initctrl 启动时,它工作正常,但显然在引导时无法启动。- 它的状态为停止/等待。否则,启动时它工作正常(并重生)。您知道我哪里出错了吗?合适的“启动”参数是什么?
编辑:确切的错误是“init: gw6c 主进程 (xxx) 以状态 8 结束”,然后是进程重生,我怀疑 xxx 是 PID。我也有点怀疑这是因为 gw6c 在网络启动之前启动,我需要在 gw6c 启动之前启动我的 eth0
答案1
显然
respawn
console none
start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]
script
chdir /usr/local/gw6c/bin/
exec /usr/local/gw6c/bin/gw6c
end script
似乎有效
答案2
将以 gw6c 开头的脚本放在
/etc/network/if-up.d
该文件夹中的所有脚本都会在接口启动后运行。如果您只希望它在 eth0 启动时运行,请编辑 eth0 条目
/etc/network/interfaces
并添加对脚本的调用
iface eth0 inet dhcp
up /etc/init.d/gw6c restart
我还建议添加预关闭脚本,以便在接口离线之前关闭隧道。
一旦你这样做了,并找到了一个可行的实现,就把它发回这里,这样我就可以使用它了。我的笔记本电脑上有 gw6c,但到目前为止,我一直懒得让它自动化。
答案3
谢谢“The Journeyman geek” :) 你帮我节省了很多时间。我一直在与 /etc/init.d/gw6c 脚本作斗争,尝试使用“sysv-rc-conf -p”进行一些计时,想知道为什么它不起作用(又名 WTF?)。
respawn
console none
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]
script
exec /etc/init.d/gw6c start
end script
稍微修改(“运行级别”和执行命令)的脚本就完成了工作!:) :) :)
答案4
从这里: http://upstart.ubuntu.com/cookbook/#single-job-instance-running-without-pid
description "Uncomplicated firewall"
# Make sure we start before an interface receives traffic
start on (starting network-interface
or starting network-manager
or starting networking)
stop on runlevel [!023456]
console output
pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop