そして今、systemdの答え。
これらの質問と回答から約4年が経過しましたが、世界は変わっていません。バージョン7以降、CentOSはsystemdを使用しています。Ubuntuは質問とコメントで言及されています。Ubuntuはバージョン15以降、systemdも使用しています。
rc
systemdの下でSystem 5 スクリプトを使用できますが、ここでの回答のスクリプトは控えめに言っても非常に最適ではありません。ある人はkillall
、デーモン管理の問題がよく知られているを使用しています。もう1つは、がらくたロックファイルとPIDファイルロジックの混乱です。サービスマネージャー自体がデーモンプロセスを追跡しているため、サービスマネージャーでは実際には必要ありません。
他の場所で述べたように、このことを学び始めてCentOS Linuxバージョン7以降またはUbuntu Linuxバージョン15以降を使用している場合rc
は、最初にSystem 5 スクリプトで始めないでください。systemdユニットファイルから始めます。
複数のXvfbサービスのテンプレート
xvfb.service
xvfbの単純なsystemdユニットファイルは、https: //www.centos.org/forums/viewtopic.php?f = 48&t = 49080#p208363 および/ubuntu//a/621256/43344にあります。ただし、後者で述べたように、テンプレート化されたアプローチを取ることもできます。
[単位]
Description =ディスプレイ%Iの仮想フレームバッファXサーバー
After = network.target
[サービス]
ExecStart = / usr / bin / Xvfb%I -screen 0 1280x1024x24
[インストール]
WantedBy = multi-user.target
これ/etc/systemd/system/xvfb@.service
はもちろん、ローカルで記述された、システム全体ではなく、パッケージ化されていない、システム全体の(ユーザーごとではなく)サービス用のユニットファイルです。
サービスの制御
必要な表示番号を使用して、テンプレートを実際の名前付きサービスにインスタンス化します。:99
したがって、displayの場合、という名前の実際のサービスインスタンスがありますxvfb@:99.service
。
- を使用して、ブートストラップでサービスを自動開始するように設定し
systemctl enable xvfb@:99.service
ます。
- によるサービスの自動起動の設定を解除し
systemctl disable xvfb@:99.service
ます。
- を使用して手動でサービスを開始します
systemctl start xvfb@:99.service
。
- でサービスを手動で停止します
systemctl stop xvfb@:99.service
。
- を使用して、現在のサービスステータスを詳細に調べ
systemctl status xvfb@:99.service
ます。
参考文献