ブート時にスクリプトを開始する必要があります。/etc/init.d および /etc/profile.d の下のスクリプトはシステム起動時にソース化されると読みました。これらのディレクトリはどの程度異なりますか?
上記の 2 つの方法以外にも、@reboot /path/to script のようなエントリを使用してサービスを開始するように cron を構成することもできるようです。
システムの起動時にスクリプトを実行する正しい/効率的な方法を提案してください。
答え1
/etc/profile.d
は、シェル セッションの環境 (設定PATH
など) をカスタマイズするベンダー固有の手段であり、通常はデーモンの起動とは関係ありません。デーモンの起動には が一切関与すべきではないと主張する人もいます。そうしないと、/etc/profile.d
ユーザーによるシェルのカスタマイズによってデーモンがロードに失敗したり、間違った環境設定 (タイムゾーン、ロケールなど) でロードされたりすることがなくなります。
/etc/init.d
は、Linux で実装されている SystemV init システムの一部です (対照的に、Digital UNIX では の下に配置されています/sbin/init.d
)。デーモンを起動する適切な init スクリプトを作成できます (これを適切に行う方法については、既存のスクリプトを調べてください)。これにより、RHEL6 と RHEL7 の両方との互換性が得られます。
cron@reboot
ジョブでデーモンを起動できますが、systemd
RHEL7 では cron からの fire-and-forget よりも優れた管理機能が提供されます (デーモンがクラッシュするとどうなるか? 自動的に再起動する必要があるか? 複数のインスタンスが起動された場合、どの程度問題になるか? 問題になる場合、1 つのインスタンスのみを起動するにはどのようなロックが必要か)。