我有一个运行 Ubuntu Server 版本 10.04 LTS(Lucid Lynx)的 VPS 实例。
我已经安装了 munin 和 munin-node。配置正确。运行良好。
问题是我需要运行命令sudo service munin-node start
才能启动它。
如果我重新启动系统(sudo reboot now
使用基于 Web 的控制面板或通过 Web 控制面板),此服务不会启动。我需要运行上述命令才能启动它。
我尝试了“一切”方法来排除故障,但都没有成功。
1) 它应该会启动我使用 aptitude 在此 VPS 中安装的许多其他程序(ProFTPd、NginX、MySQL、monit、Icecast、Postfix 和许多其他程序)。但事实并非如此。
2) 我尝试添加service munin-node start
,就像/etc/rc.local
我成功完成的那样,以启动另一项服务。但它没有启动!
3) 我运行了命令update-rc.d munin-node defaults
。听起来一切正常!重启后...它没有启动!
4)我跑去grep -r munin *
看了所有与 munin 相关的东西/var/log
在我担任系统管理员的几年里,我从来没有这么一无所知就像这次。
真正令人印象深刻的是,service munin-node start
一旦系统启动并运行,一个简单的(或等效的)...服务就会正常启动。
有想法吗?建议吗?
我即将尝试来自另一个问题的提示,如果一切都失败了......
答案1
好吧,我可能还没有找到确切的为什么,但我找到了解决方案。
我修改了/etc/init/munin-node.conf
upstart 配置文件,现在 munin-node 会在重启时自动启动,正如我所希望的那样。
我替换了存在的“开始“ 和 ”停止“在 MySQL upstart 配置文件中找到的子句/etc/init/mysql.conf
以下是我修改后的片段/etc/init/munin-node.conf
,现在对我有用:
#start on (filesystem and net-device-up IFACE=lo)
#stop on runlevel [!2345]
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [016]
我刚刚注释了原来的“start on”和“stop on”行,并从 mysql.conf 中添加了“start on”和“stop on”行。
如果有专家能为我们解释一下这几行字的含义就好了……
谢谢。
答案2
在我看来,启动 munin-node 服务的最佳方式是在 /etc/init/munin-node.conf 中添加如下一行:
start on (net-device-up IFACE!=lo and local-filesystems)
这是因为您需要一个接口(lo 除外)来监听 munin-node,并且还需要安装本地文件系统,以便访问统计数据。
您可以使用运行级别指令,但不建议这样做:
是否使用更通用的“运行级别”或更明确的 local->filesystems(7) 和 net-device-up 事件之间的区别应由您的作业行为决定。如果您的服务在没有有效网络接口的情况下启动(例如,它绑定到 >0.0.0.0,或使用 setsockopt(2) SO_FREEBIND),则运行级别事件是首选,因为您的服务将稍早启动并与其他服务并行启动。
但是如果您的服务由于某种原因需要配置非环回接口(即,如果没有广播功能它就无法启动),那么明确地说“一旦非环回设备启动”就会有所帮助。
来自 Ubuntu upstart cookbook:http://upstart.ubuntu.com/cookbook/#start-on