我有一个Debian和一个RPM包,需要将启动/停止脚本添加到/etc/init.d目录。 最近,一位远程开发人员告诉我,“知情者”知道“最佳实践”是将启动安装在/etc/init.d目录中,而不是使用符号链接,尤其是在安装包时在不同的分区上。 我一直使用符号链接。 一个“ls -la”显示了很多包使用符号链接。
有没有一个Unix / Linux专家可以给出一个明确的答案,关于在/etc/init.d目录启动脚本的最佳做法。 是最佳实践符号链接,硬链接,实际的文件或者它真的很重要?
如果你能引用一个资料来源,那将是非常好的。 我有谷歌这个话题,但我无法find答案。
LSB标准( https://refspecs.linuxbase.org/LSB_2.1.0/LSB-generic/LSB-generic/initsrcinstrm.html )指出/etc/init.d脚本可以作为符号链接:
An init.d file is installed in /etc/init.d (which may be a symlink to another location) . . .
但说实话,我想我只见过第三方供应商应用程序使用符号链接。
编辑:3.0规范中的相同字母( https://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-generic/LSB-generic/initsrcinstrm.html )
我所见过的完成initscritps的唯一方法是在/etc/init.d一个常规文件,并在每个运行级别的目录中为该文件build立一个符号链接。
从/etc/init.d到另一个位置的符号链接可以工作。 但这不是正常的做法。 如果链接指向根分区之外,则最终会导致一个轻松中断的设置。
我build议像其他服务一样,在/etc/init.d中/etc/init.d一个文件。
我发现RHEL7的问题没有遵循/etc/init.d/中的符号连接脚本。服务没有在启动时启动,有些“服务XXX启动”命令失败。
解决这个问题的唯一方法是将文件复制到init.d目录中,而不是符号链接。 因此,尽pipe直接使用符号链接直接复制文件很方便,但这可能是更好的做法。