web-dev-qa-db-ja.com

OpenSuse 12.3の/etc/init.d/skeletonはどこにありますか?

OpenSuse 12.3の新規インストール時に、プログラムを「デーモン化」したいと思います。そして、インターネットで見つかったすべての例で、最初に/etc/init.d/myscriptに基づいて/etc/init.d/skeletonを作成する必要があることがわかります。

しかし、私には/etc/init.d/skeletonがありません...このファイル用の別の場所はありますか?それとも何かをインストールする必要がありますか?

システムは最新の状態です。最初に確認しました。

別の既存の/etc/init.dスクリプトをコピーして変更したり、新しいスクリプトを作成したりできることはわかっていますが、間違っているかどうか、またはOpenSuseでそれを行う別の特別な方法があるかどうかはわかります。

6
plunkets

/etc/init.d/skeletonファイルがどこに消えたかはわかりませんが、この変更は、OpenSUSE12以降の従来のSysV init daemonからsystemdへの置き換えに関連していると思います。systemdはよく知られているinitscriptsと完全に互換性がありますが、開始サービスのsystemdモデルを使用したいと思います。

私の意見では、従来のinitscriptは扱いにくい場合があり、シェルスクリプトのより深い知識が必要になる場合があります。一方、サービスのsystemd "initscript"またはunit構成ファイル(man systemd.unit)は、.INIファイルと同様の単純な構文であるため、保守が容易です。 。ユニットファイルを書き込んで、ファイルを/etc/systemd/systemディレクトリにドロップして有効にすることができます。このディレクトリは、デフォルトのディレクトリ/usr/lib/systemd/systemよりも優先されます。 sshdデーモンユニットの例は次のとおりです。

[Unit]
Description=OpenSSH Daemon
After=syslog.target network.target

[Service]
EnvironmentFile=/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

または、慣れ親しんだ「レガシー」initscriptを使用することもできます。しかし、次のようなsystemdのいくつかのきちんとした機能が失われます。

  • 起動時間の短縮、サービスの実際の並列起動
  • 自動依存関係処理
  • サービスの監視とクラッシュしたサービスの自動再起動
  • そして、はるかに

最後に、initscript(sshd.service)と同じベース名を持つユニット(/etc/init.d/sshd)がある場合、initscriptは無視され、systemdユニットは優先して使用されます。

4
dsmsk80