我需要在启动时启动我的脚本。我读到 /etc/init.d 和 /etc/profile.d 下的脚本是在系统启动期间获取的。这些目录有什么不同?
除了上述两种方式之外,似乎我们还可以使用 @reboot /path/to 脚本之类的条目配置 cron 来启动服务。
请建议在系统启动期间执行脚本的正确/有效的方法。
答案1
/etc/profile.d
是一种特定于供应商的自定义 shell 会话环境(设置PATH
等)的方法,通常与守护进程的启动无关;有些人甚至会认为守护程序启动决不应该涉及/etc/profile.d
,这样用户 shell 自定义就不会导致守护程序无法加载,或者使用不正确的环境设置(时区、区域设置等)进行加载。
/etc/init.d
是 Linux 上实现的 SystemV init 系统的一部分(相比之下,Digital UNIX 将其放在 下/sbin/init.d
);人们可以编写一个适当的初始化脚本(研究现有脚本以了解如何正确执行此操作)来启动您的守护程序。这将使您与 RHEL6 和 RHEL7 兼容。
cron作业@reboot
可以启动您的守护进程,尽管systemd
在 RHEL7 下确实提供了比 cron 的即发即弃更好的管理功能(如果守护进程崩溃会发生什么?它应该自动重新启动吗?如果启动多个实例会有多糟糕?如果不好,只启动一个实例需要什么样的锁定?)。