将在无头系统上启动时运行的守护程序所需的变量放入 中是一个坏主意吗/etc/profile.d/
?据我了解,profile.d
直到有人通过交互式 shell 登录系统后才会执行。那么,我的守护进程是否最终需要保存系统变量profile.d
,直到有人登录系统才设置这些变量,还是rc.local
在无人值守的系统上运行后设置这些变量? (系统是运行bash的RHEL 6.5)
答案1
如果它不起作用,那就是个坏主意。我认为您对profile.d
除非有人登录否则不运行的担忧是合理的。
将 init 脚本放入 /etc/rc.d/init.d(我认为这是 Red Hat 的正确目录;在 Ubuntu 中是 /etc/init.d)来启动守护进程。在此脚本中,您可以声明/定义所需的任何变量,并且当您启动守护程序二进制文件时,这些变量应该在范围内。
链接这里解释了该过程以及它为何优于该rc.local
方法的确切原因。
另一个答案中提到的方法rc.local
将不起作用,因为当执行返回到 Linux INIT 时,该脚本中设置的变量不再定义。因此,这是在任何人登录之前,因此它隐式地在 profile.d 运行之前。
答案2
直接回答你的问题,如果行不通的话那只是一个坏主意。所以我的直接回答是“不”,如果它不起作用,“是”如果它起作用。你尝试过吗?也就是说,您是否确认如果没有人登录,profile.d 不会在您的系统上运行?
作为如何使其工作的建议:rc.local
以相同的方式编辑文件,以确保在启动时应用设置。
无论全新的普通安装会发生什么,您都应该尝试一下,看看您放入这些文件(profile.d
或rc.local
)中的设置是否按预期应用。如果它能正常工作/etc/profile.d
,那么就可以在您的设置中正常工作,幸运的是。
这个链接linuxtopia 的一本在线书籍表明它rc.local
位于/etc/rc.d/rc.local
RHEL 6 中。