使用init.d文件的自定义路径重新启动服务

问题描述

我想通过AIX上的init.d文件重新启动服务。 Ansible servicesysvinit无效。如何使用Ansible控制这些服务。

我知道我可以运行shell命令,但也许有内置的解决方案。

这就是我要在shell上执行的操作

/etc/rc.d/init.d/nrpe restart

解决方法

来自docs of the service builtin

控制远程主机上的服务。受支持的init系统包括BSD init,OpenRC,SysV,Solaris SMF,systemd和upstart。

基本上,service模块尝试自动检测使用哪个初始化系统,并使用该初始化系统执行操作。但是,如果您的init系统不了解该服务(您正在直接运行init脚本,对吗?),该服务(init系统)将无法重新启动它。

因此,如果初始化系统不了解您的服务,则不能使用service模块或任何其他尝试与初始化系统进行交互的模块。

您应该将init脚本放入用于系统识别的正确目录中(然后您也可以运行service nrpe restart),然后使用service模块。
如果由于某种原因无法执行此操作,则需要使用commandshell模块来重新启动服务。