Systemd BindPaths=が機能しません

Systemd BindPaths=が機能しません

BindPaths=私はsystemdを使ってDebian 8システムでこのディレクティブがどのように機能するかをテストしたいと思います。

現在、サービスの基本単位ファイルがあります。

[Unit]
Description="Simple Test Service"
BindPaths=/path:/bindmount/path:norbind

[Service]
ExecStart=/usr/bin/long_running_program --flags
Restart=always

[Install]
WantedBy=multi-user.target

findmntサービスの開始前後に実行してみると、/bindmount/pathバインドマウントがまったく表示されません。

マウント位置をバインドするlsかバインディングすると。ls -a/bindmount/path/path

期待どおりに機能しないのはなぜですか?

systemd BindPath= のマニュアルページを参照してください。それは言う:

このオプションはシステムサービスにのみ適用され、Service Managerのユーザー固有のインスタンスで実行されるサービスではサポートされていません。

Service Managerのユーザー固有のインスタンスで実行されているのか、システムサービスを実行しているのか、どうすればわかりますか?私のサービスが/etc/systemd/systemvsにあるかどうかによって決まりますか/lib/systemd/system

ベストアンサー1

このBindPathsオプションを有効にすると、デバイスで実行されているプロセスにファイルが表示されます。これは、サービスを開始するためにコマンドを入力するシェルではまったく表示されません。どのファイルシステムがマウントされているかをいつでも確認できますが、/proc/mountsBindPathsを使用してサービスを実行している場合は、ファイルシステムが正しくマウントされていることを確認する唯一の方法は、次の点を確認することです。/proc/サービスPID/mounts。後者は、プロセスがマウントしたファイルシステムのリストです。

最後の質問について:/lib/systemd/systemすべての一般的なユニットファイルを含むと同時に、カスタム/etc/systemd/systemユニットファイルとユニット間のすべての依存関係も含めます。各ユーザーインスタンスは、systemctl --userホームディレクトリツリーの単位ファイルを使用して実行および参照します。

おすすめ記事