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/system
vsにあるかどうかによって決まりますか/lib/systemd/system
?
答え1
このBindPaths
オプションを有効にすると、デバイスで実行されているプロセスにファイルが表示されます。これは、サービスを開始するためにコマンドを入力するシェルではまったく表示されません。どのファイルシステムがマウントされているかをいつでも確認できますが、/proc/mounts
BindPathsを使用してサービスを実行している場合は、ファイルシステムが正しくマウントされていることを確認する唯一の方法は、次の点を確認することです。/proc/
サービスPID/mounts
。後者は、プロセスがマウントしたファイルシステムのリストです。
最後の質問について:/lib/systemd/system
すべての一般的なユニットファイルを含むと同時に、カスタム/etc/systemd/system
ユニットファイルとユニット間のすべての依存関係も含めます。各ユーザーインスタンスは、systemctl --user
ホームディレクトリツリーの単位ファイルを使用して実行および参照します。