SystemdのInhibitorLocksとmansystemd-inhibitに関するドキュメントは、何かをブロックする方法でプロセスを開始する方法を説明するために非常に長くなっています(例:handle-lid-switch
イベント)。
そのような「ロック」/「禁止」/「ブロック」を削除する方法を見つけることができませんでした。
質問: systemd-inhibit
を削除する方法はありますか? たとえば、dbus
を介してロックします メッセージ?
背景: **
の抑制剤ロックを解除するには何が必要ですか
私のラップトップにはラップトップの蓋を閉じるスイッチがあり、systemd-logind
モニターし、蓋が閉じている場合はラップトップを一時停止します–機能「close-lid -> suspend
「。
ラップトップをドッキングステーションに配置したら、より大きな画面を使用できるようにするために、Gnomeのgsd-powerを任意に(そして誤って そして、Gnomeでそれを変更するための利用可能な設定がない場合)、抑制ロックを作成することを決定し、機能「close-lid -> suspend
」が機能します。
抑制ロックを解除する方法を知っていれば、Gnomeのgnome-setting-deamon power gsd-power
によって行われた誤った設定を修正することができます。 。 suspend systemctl suspend
を手動で呼び出すため、Gnomeの設定が間違っています。 確かに問題はありませんでした。
systemd-inhibit --list
にリストされているように、削除したい抑制ロック これは:
Who: alex (UID 1000/alex, PID 4248/gsd-power)
What: handle-lid-switch
Why: Multiple displays attached
Mode: block
承認された回答:
抑制剤ロックの開発者向けドキュメントから:
Inhibit()は、単一の値、つまりロックをカプセル化する
ファイル記述子を返します。ファイル記述子が閉じられると(そしてそのすべてが
複製されると)、ロックは自動的に解放されます。ロックが取得されている間にクライアントが
停止すると、カーネルはファイル記述子を自動的に閉じて
、ロックが自動的に解放されるようにします。この方法で取得された遅延ロックは、
PrepareForShutdown(true)(以下を参照)を受信したらできるだけ早く解放する必要がありますが、もちろん、アプリケーションが操作を遅延させたいアクションの実行後にのみ
そもそも。
おそらくgsd-power
を殺したくないでしょう 、したがって、ロックをカプセル化するファイル記述子を閉じる必要があります。ほとんどの場合、gsd-power
によって保持されています 。別のプロセスにそのファイル記述子の1つを強制的に閉じることは通常のことではなく、gsd-power
内でいくつかの副作用を引き起こす可能性があります 。ただし、それを実行したい場合は、StackOverflowでこの質問を読んでください。
代わりに、gsd-power
を削除してみてください DBusアクションorg.freedesktop.login1.inhibit-handle-lid-switch
を実行するためのの権限 。マニュアルページdbus-daemon(1)
役に立つかもしれません。