我想使用 monit 启动服务,但前提是我有正确的 ip 绑定到主机。这可以通过正常配置以某种方式完成吗?例如,我想使用 pidfile xxx.pid 启动进程 xxx,但前提是主机当前将 10.0.0.1 绑定到某个接口。
答案1
在纯监控上可能无法做到这一点。
您可以编写一个 shell 脚本来检查 IP 是否绑定到某个接口,然后启动服务,但副作用是,如果在 monit 启动后未创建 pid 文件,monit 会抱怨程序未启动。
更新: 您可以通过添加来禁用此警告当地警报声明:
check process myproc with pidfile /var/run/my.pid
alert foo@bar only on { timeout }
更新2: Bash 脚本可以是类似这样的(您需要将实际的启动脚本作为参数):
#!/usr/bin/env bash
for i in `/sbin/ifconfig -a | grep 'inet addr:' | awk '{print $2}' | sed -e 's/^.*://'` ;do
if [ "$i" == "10.0.0.1" ] ; then
$1
fi
done
答案2
无论如何,老问题已经老了:您可以使用 guessnet+ifupdown 来解决此问题。