注意:我运行的是 Red Hat 6.7
我有一个使用 Linux init 系统配置的服务,以便在计算机启动时将进程作为服务启动。这是通过从命令行进行一次性配置来完成的:
ln -snf /home/me/bin/my_service /etc/init.d/my_service
chkconfig --add my_service
chkconfig --level 235 my_service on
当操作系统重新启动时,服务将按预期启动。
如果服务(my_service)崩溃,我还需要重新启动该服务。根据我所读到的内容,我需要做的就是向 /etc/inittab 添加一个条目,如下所示:
mysvc:235:respawn:/home/me/bin/my_service_starter
my_service_starter 看起来像:
#!/bin/bash
/home/me/bin/my_service start
my_service 脚本如下所示:
#!/bin/bash
"/usr/java/bin/java" /home/me/bin/my_service.jar start
我的理解是,当init系统检测到my_service没有运行时,它会尝试通过运行“my_service_starter”来重新启动它。
然而这似乎不起作用。即操作系统重新启动时该服务不会启动。
我需要了解当服务崩溃时如何告诉 Linux init 系统重新启动我的服务。
答案1
红帽6的用途暴发户作为初始化系统。
提供的文件的开头inittab
是以下几行:
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
您需要init
在中创建正确的定义/etc/init
(注意:不是 /etc/init.d
)。
例如(但可能需要调试)/etc/init/myservice
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /home/me/bin/my_service_starter