追加読書

追加読書

私はできるだけ多くのsysvinitシステムで実行できるクロスプラットフォームのsysvinitサービスを作成しようとしています。

私に必要なもの:

  • プロセスにデーモンが必要です(実行時に自動的にデーモン化されません)。

  • 競合が発生した場合は、プロセスを再起動する必要があります。

コマンドを使用してstart-stop-daemonデーモンを実装しましたが、これが常に存在するわけではないことを理解しています。start-stop-daemonクロスプラットフォーム機能を実装するより標準的な方法はありますか?

また、競合が発生した場合は、プロセスが自動的に再起動されることを確認する必要があります。これを達成するための最良のクロスプラットフォーム方法は何ですか?

update-rc.dコマンドが常に存在しないことも可能ですか?それでは、代わりに何を使うべきですか?

これは私のsysvinitスクリプトです。https://gist.github.com/banister/40775de6a3778e1439d2f776d290073d

ありがとうございます!

ベストアンサー1

一つできるrcこれを行うには、van Smoorenburgスクリプトを作成してください。それらは最終的にスクリプトの各個々の段階の構成になりますcaseesacこれはメンテナンス不可能です。

これはこのメカニズムの既知の問題の1つです。

それに加えて、van Smoorenburgrcスクリプトは長年にわたってUbuntuとFedoraで作業を行う方法ではありませんでした。どちらの場合も、systemdを使用する前にUpstartがありました。実際、rcArch Linuxではsystemdのvan Smoorenburg互換性がオフになっています。 van Smoorenburgrcスクリプトを、誰もが実行できる一種の一般的な最小値と考えてください。補助コマンドの変更も無視します。完全な間違いです。あなたの目標は間違っています。

すべてのバージョンに対して単一のスクリプトを作成するときに満たす必要がある広範な違いの概要を取得するには、2014年からrcvan Smoorenburgスクリプトを作成するDebianの方法が次のように文書化されていることを検討してください。

#!/lib/init/init-d-script

## 初期化情報の開始
#提供:myvpn
#必須起動:$ network $ local_fs $ remote_fs
# 停止する項目: $network $local_fs $remote_fs
#基本スタート:2 3 4 5
#基本停止:0 1 6
#簡単な説明:私のVPNサービス
#説明:このスクリプトはMY VPNデーモンプロセスを起動します。
### 初期化情報の終了

DAEMON=/opt/myvpn/bin/myvpn-デーモン
名前= myVPN
LD_LIBRARY_PATH エクスポート=/opt/myvpn/lib

これはスクリプトよりはるかに短く、追加のコンテンツのためのスペースがあります。おおよそのシステム化されたサービスユニットを例に挙げます。

% 猫 myvpn.service
[単位]
説明=MyVPNサービス

[提供する]
ExecStart=/opt/myvpn/bin/myvpn-daemon
環境=LD_LIBRARY_PATH=/opt/myvpn/lib
再起動=常に

[インストールする]
WantedBy =マルチユーザー。ターゲット
%

...変換して...

%SystemControlTranslation systemd-units --no- Generation-comment ./myvpn.service
%

...daemontoolsサービス定義スイート(この場合はnoshツールセットを使用)がどのように見えるかを示します。

%システム制御印刷サービススクリプト。/ myvpn
開始: #!/bin/nosh
開始:事実
停止: #!/bin/nosh
停止:事実
実行: #!/bin/nosh
実行:#myVPNService
実行:制御グループ../myvpn.serviceに移動します。
実行:getuidgid
実行:userenv-fromenv
実行:setenv LD_LIBRARY_PATH /opt/myvpn/lib
実行: chdir/
実行:/opt/myvpn/bin/myvpn-daemon
再起動: #!/bin/sh
再起動:スリープ0.1
restart:exec true#スクリプトパラメータを無視します。
%

Daemontools Service ManagerスイートはLinuxではなくオペレーティングシステムで実行でき、自動再起動はこの世界のデフォルト設定でもあります。

追加読書

おすすめ記事