OpenSuse 12.3 を新規インストールして、プログラムを「デーモン化」したいと考えています。インターネットで見つかったすべての例を見ると、まず.../etc/init.d/myscript
に基づいて作成する必要があることがわかります。/etc/init.d/skeleton
しかし、私は持っていません/etc/init.d/skeleton
...このファイルのための別の場所はありますか?それとも何かをインストールする必要があるのでしょうか?
システムは最新です、まずそれを確認しました。
既存のスクリプトをコピーして変更したり、新しいスクリプトを作成したりできることはわかっています/etc/init.d
が、それが間違っているのか、OpenSuse でそれを行う別の特別な方法があるのかどうかがわかります。
答え1
ファイルがどこに消えたのかはわかりませんが、この変更は、 OpenSUSE 12 以降、従来のinitscripts/etc/init.d/skeleton
の置き換えに関連していると思われます。OpenSUSE 12は、よく知られている initscripts と完全に互換性がありますが、サービスを開始するモデルを使用することを好みます。SysV init daemon
systemd
systemd
systemd
私の意見では、従来の initscripts は扱いにくく、場合によってはシェル スクリプトのより深い知識が必要になることがあります。一方、サービス ( ) の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
あるいは、慣れている「レガシー」initscripts を使い続けることもできます。ただし、systemd
次のような優れた機能が失われます:
- 起動時間の短縮、サービスの並列起動
- 自動依存関係処理
- サービスの監視とクラッシュしたサービスの自動再起動
- その他多数
sshd.service
最後に、 initscript ( /etc/init.d/sshd
) と同じベース名を持つユニット ( ) がある場合、initscript は無視され、systemd
ユニットが優先されて使用されることに注意してください。