Dokumentace k blokovacím zámkům Systemd a také man systemd-inhibit je velmi obsáhlá, aby vysvětlila, jak spustit proces způsobem, který něco blokuje (např. handle-lid-switch
událost).
Nebyl jsem schopen najít způsob, jak mi umožnit odstranit takový „zámek“/“blokovat“/“blok“.
Otázka: Existuje způsob, jak odstranit systemd-inhibit
zámek, například prostřednictvím dbus
zprávu?
Pozadí: k čemu bych potřeboval odstranit blokovací zámek**
Můj notebook má vypínač na víku notebooku, který systemd-logind
monitory a v případě zavření víka zavěsí notebook – funkce „close-lid -> suspend
“.
Jakmile je notebook umístěn ve své dokovací stanici, aby uživatel s větší obrazovkou, libovolně (a chybně) Gnome gsd-power a bez jakéhokoli dostupného nastavení v Gnome pro jeho změnu ) se rozhodne vytvořit blokovací zámek, který zabrání funkci „close-lid -> suspend
” do práce.
Vědět, jak odstranit blokovací zámek, by mi umožnilo napravit chybné nastavení způsobené gnome-setting-deamon power gsd-power
. Nastavení Gnome je špatné, protože ruční vyvolání pozastavení systemctl suspend
skutečně neukázal žádný problém.
Zámek inhibitoru, který bych chtěl odstranit, jak je uveden v systemd-inhibit --list
je toto:
Who: alex (UID 1000/alex, PID 4248/gsd-power)
What: handle-lid-switch
Why: Multiple displays attached
Mode: block
Přijatá odpověď:
Z dokumentace pro vývojáře blokovacích zámků:
Inhibit() vrací jedinou hodnotu, deskriptor souboru, který zapouzdřuje
zámek. Jakmile je deskriptor souboru uzavřen (a všechny jeho
duplikáty), zámek se automaticky uvolní. Pokud klient zemře
během zamčení, jádro automaticky zavře deskriptor souboru
, takže zámek se automaticky uvolní. Zámek zpoždění
přijatý tímto způsobem by měl být uvolněn co nejdříve po přijetí
PrepareForShutdown(true) (viz níže), ale samozřejmě až po
provedení akcí, kterými aplikace chtěla operaci zpozdit
na prvním místě.
Pravděpodobně nebudete chtít zabít gsd-power
, takže byste museli zavřít deskriptor souboru, který zapouzdřuje zámek. S největší pravděpodobností jej drží gsd-power
. Přinutit jiný proces k uzavření jednoho ze svých deskriptorů souborů není normální věc a může způsobit některé vedlejší účinky v rámci gsd-power
. Ale pokud to chcete udělat, přečtěte si tuto otázku v Stack Overflow.
Místo toho můžete zkusit odstranit gsd-power
oprávnění ke spuštění akce DBus org.freedesktop.login1.inhibit-handle-lid-switch
. Manuálová stránka dbus-daemon(1)
může být užitečné.