OpenSuse 12.3の新規インストール時に、プログラムを「デーモン化」したいと思います。そして、インターネットで見つかったすべての例で、最初に/etc/init.d/myscript
に基づいて/etc/init.d/skeleton
を作成する必要があることがわかります。
しかし、私には/etc/init.d/skeleton
がありません...このファイル用の別の場所はありますか?それとも何かをインストールする必要がありますか?
システムは最新の状態です。最初に確認しました。
別の既存の/etc/init.d
スクリプトをコピーして変更したり、新しいスクリプトを作成したりできることはわかっていますが、間違っているかどうか、またはOpenSuseでそれを行う別の特別な方法があるかどうかはわかります。
/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
ユニットは優先して使用されます。