GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie entferne ich einen Systemd-Inhibit-Block?

Die Dokumentation über Systemds Inhibitor Locks und auch man systemd-inhibit erklären sehr ausführlich, wie man einen Prozess so startet, dass er etwas blockiert (z. B. den handle-lid-switch Veranstaltung).

Ich konnte keine Möglichkeit finden, mir zu erlauben, eine solche „Sperre“/“Sperre“/„Sperre“ zu entfernen.

Frage: Gibt es eine Möglichkeit, die systemd-inhibit zu entfernen sperren, zum Beispiel über einen dbus Nachricht?

Hintergrund: Wozu brauche ich, um eine Sperre zu entfernen**

Mein Laptop hat einen Schalter zum Schließen des Laptopdeckels, der systemd-logind überwacht und bei geschlossenem Deckel den Laptop anhält – Funktionalität „close-lid -> suspend „.

Sobald der Laptop in seine Dockingstation gestellt wird, um den Benutzer eines größeren Bildschirms zu machen, wird die gsd-Leistung von Gnome willkürlich (und fälschlicherweise und ohne eine verfügbare Einstellung in Gnome, um sie zu ändern ) beschließt, eine Sperre zu erstellen, die die Funktionalität „close-lid -> suspend“ verhindert ” zu arbeiten.

Wenn ich weiß, wie man eine Inhibitor-Sperre entfernt, kann ich die fehlerhafte Einstellung beheben, die von Gnomes gnome-setting-deamon power gsd-power vorgenommen wurde . Die Einstellung von Gnome ist falsch, weil das manuelle Aufrufen von suspend systemctl suspend zeigte in der Tat kein Problem.

Die Inhibitor-Sperre, die ich entfernen möchte, wie in systemd-inhibit --list aufgeführt ist das:

     Who: alex (UID 1000/alex, PID 4248/gsd-power)
    What: handle-lid-switch
     Why: Multiple displays attached
    Mode: block

Akzeptierte Antwort:

Aus der Entwicklerdokumentation der Inhibitor-Sperren:

Inhibit() gibt einen einzelnen Wert zurück, einen Dateideskriptor, der
die Sperre kapselt. Sobald der Dateideskriptor geschlossen wird (und alle seine
Duplikate), wird die Sperre automatisch aufgehoben. Wenn der Client
stirbt, während die Sperre genommen wird, schließt der Kernel automatisch den Dateideskriptor,
so dass die Sperre automatisch freigegeben wird. Eine auf diese Weise vorgenommene Verzögerungssperre
sollte so schnell wie möglich beim Empfang von
PrepareForShutdown(true) (siehe unten) freigegeben werden, aber natürlich erst nach
Ausführung der Aktionen, die die Anwendung verzögern wollte
an erster Stelle.

Wahrscheinlich möchten Sie gsd-power nicht beenden , also müssten Sie den Dateideskriptor schließen, der die Sperre kapselt. Es wird höchstwahrscheinlich von gsd-power gehalten . Einen anderen Prozess dazu zu zwingen, einen seiner Dateideskriptoren zu schließen, ist nicht normal und kann einige Nebeneffekte innerhalb von gsd-power verursachen . Aber wenn Sie es tun möchten, lesen Sie diese Frage in Stack Overflow.

Verwandte:Wie stellt die Bereitstellung einer ASC-Datei sicher, dass ich den beabsichtigten Quellcode herunterlade?

Stattdessen können Sie versuchen, gsd-power zu entfernen die Erlaubnis, die DBus-Aktion org.freedesktop.login1.inhibit-handle-lid-switch auszuführen . Die Manpage dbus-daemon(1) könnte hilfreich sein.


Linux
  1. Wie deinstalliere ich SBT?

  2. Firefox reagiert aufgrund von Sperrdateien nicht, wie entferne ich sie?

  3. So entfernen Sie alle Docker-Container

  4. So entfernen Sie systemd-Dienste

  5. Java SecureRandom blockiert nicht? Wie?

So entfernen (löschen) Sie symbolische Links in Linux

So entfernen Sie einen Befehl aus dem Verlauf in Linux

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So entfernen Sie das Git-Remote-Repository

So entfernen Sie Docker-Container

Wie entferne ich Swap Space von Centos 7.x?