我需要在啟動時啟動我的腳本。我讀到 /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 的即發即棄更好的管理功能(如果守護進程崩潰會發生什麼?它應該自動重新啟動嗎?如果啟動多個實例會有多糟糕? 如果不好,只啟動一個實例需要什麼樣的鎖定?