我想开始一个服务,但只有当我有正确的IP绑定到主机。 这可以做一些正常的configuration吗? 例如,我想用pidfile xxx.pid启动一个进程xxx,但是只有当主机目前有10.0.0.1绑定到某个接口。
可能是纯粹的monit不能完成的。
你可以编写一个shell脚本来检查IP是否绑定到某个接口上,而不是启动服务,但是副作用是monit会抱怨如果在monit启动之后没有创buildpid文件,那么程序没有启动。
更新:您可以通过添加本地警报声明来禁用此警告:
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
旧的问题是旧的,无论如何:你可以使用guessnet + ifupdown这个。