如何在没有 systemd(chkconfig 等)的情况下实现这一点?
我想重新启动 PostgreSQL、Mongod 和 RabbitMQ。
答案1
要自动恢复服务,您可以使用monit
.这是一个相当轻量且易于使用的服务。
要在 Debian 中安装它,请执行以下操作:
sudo apt-get install monit
至于配置它,您可以编辑/etc/monit/monitrc
并重新启动服务。
例如,监控守护进程是否正在运行,服务是否在相应端口应答,并为 PostgreSQL、RabbitMQ 和 mongoDB 配置自动恢复:
check process postgres with pidfile /var/postgres/postmaster.pid group database start program = "/etc/init.d/postgresql start" stop program = "/etc/init.d/postgresql stop" if failed unixsocket /var/run/postgresql/.s.PGSQL.5432 protocol pgsql then restart if failed host 192.168.1.1 port 5432 protocol pgsql then restart check host mongodb with address localhost start program = "/usr/bin/sudo /opt/database/mongo/bin/mongod" stop program = "/usr/bin/sudo /usr/bin/pkill -f mongod" if failed port 28017 protocol HTTP request / with timeout 10 seconds then start check process rabbitmq-server with pidfile /var/run/rabbitmq.pid group rabbitmq start program "/etc/init.d/rabbitmq-server start" stop program "/etc/init.d/rabbitmq-server stop" if failed port 5672 type tcp then restart if 3 restarts within 3 cycles then timeout
更多服务请参见:监控维基
Monit 还允许您按照规则发送电子邮件,并在服务器负载中起作用。我建议任何人更好地调查它。
答案2
红帽6的用途暴发户作为初始化系统。
/etc/init
您需要在(注意:NOT )中创建正确的初始化定义/etc/init.d
。
例如(但可能需要调试)/etc/init/myservice
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /code/to/program
如果终止,该respawn
值将导致重新启动。program