Wie kann ich verhindern, dass Prozesse in einer inaktiven Benutzersitzung automatisch angehalten werden?


14

Wenn ich jetzt eine Weile zwischen zwei Benutzersitzungen umschalte, wird die inaktive Sitzung in einigen Fällen die Ausführung von GUI-Prozessen stoppen. Auf diese Weise bin ich gezwungen, auf das Laden einer weiteren Sitzung zu warten, und kann in einer anderen Sitzung nichts mehr tun. Wenn ich nach einiger Zeit umschalte und zurückkehre, ist derselbe Punkt noch erreicht. Die betroffene Software umfasst rsync, rdiff-backup, KDE-Hintergrundprozesse, Steam, das in der Openbox-Sitzung gestartet wurde (sogar das Herunterladen wird gestoppt), und zumindest einige Spiele. VLC ist nicht betroffen, zumindest springt es nach dem Zurückschalten auf die benötigte Zeit, aber für einen Moment kann ich alte Frames und Zeiten in seinem Fenster sehen.

Welcher Prozess ist für ein solches Verhalten verantwortlich? Kann ich es irgendwie neu konfigurieren?

Update: Speicher- und Swap-Nutzung

Ein zusätzlicher Kontext: Die Ironie ist, dass ich genau dieses Verhalten auf der alten brainstorm.ubuntu.com (jetzt nicht mehr vorhanden) vorgeschlagen habe.


1
@Fabby fertig, es sieht nicht nach einem Swap-Problem aus, wenn du das damit meinst.
int_ua

2
Ja, das habe ich damit gemeint ... ;-) Ich habe versucht, das Verhalten zu simulieren, das bei Ihnen auftritt: Als Benutzer anmelden, dann als sekundärer Benutzer anmelden, einen Film starten, [Strg] [Alt ] [F7] an den ersten Benutzer, starten eine findauf /[Strg] [Alt] [F8] an den zweiten Benutzer und alles läuft weiter ... (wenn auch der Ton des Films stumm geschaltet wird , wenn Benutzer wechseln.) Wie testest du?
Fabby

1
@int_ua Ich weiß nicht genau, was Steam angeht, aber ich hatte Spiele, die bestimmten Code enthielten, der beim Benutzerwechsel angehalten werden musste. Ich verwende KDE nicht und kann Ihnen daher nicht weiterhelfen. Entschuldigung!
Fabby

1
Indem sowohl der Ausgabestatus vor als auch nach dem Wechsel zu einem anderen Benutzer notiert wird und eine externe Festplattenanzeige alle Aktivitäten während einer anderen aktiven Sitzung beendet.
int_ua

2
für rsyncSie verwenden verbose, um Fortschritt zu drucken? Haben Sie versucht, ohne es + haben Sie versucht, es direkt in den Hintergrund zu senden rsync .... &? Wie wäre es nohup rsync .... & ? Für die grafische Benutzeroberfläche müssen sie
angehalten werden

Antworten:


1

Dieses Problem tritt auch auf, weil ich regelmäßig zwischen Konsolen- und virtuellen Grafikterminals wechsle. Xorg per Design hält seine Clients während VT-Switches an. Aus diesem Grund scheinen seine Clients "einzufrieren", wenn Xorgs VT nicht mehr aktiv ist. Wayland funktioniert nicht. Wenn die Programme, die Sie in einem Hintergrund-VT ausführen müssen, das neue Anzeigeprotokoll unterstützen, verwenden Sie statt Xorg einen Wayland-Compositor.

Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, grafische Programme auf einem lokalen VNC-Server auszuführen, damit sie nicht angehalten werden. Dies ist die Problemumgehung, die ich am häufigsten verwende.


0

Welcher Prozess ist für ein solches Verhalten verantwortlich?

Display Manager (DM) ist derjenige, den Sie suchen. Jeder: lightdm, gdm, kdm(alte kde), sddm(neu kde), xdm...

Kann ich es irgendwie neu konfigurieren?

AFAIK, das sollte bei X Server so sein. Ich habe dieses Verhalten jedoch übersprungen mit:

  • CLI-Tools auf einer anderen virtuellen Konsole TTY
  • CLI-Tools als initService

In Bezug auf Audiostreams, als ich 2006 mit GNU / Linux anfing. Audiogeräte wurden getrennt von Display verwaltet. Jetzt haben sich die Dinge speziell mit den neuen integrierten Geräten / Anschlüssen wie HDMI geändert. Daher sollte der Pulse-Server einige X-Anzeigeereignisse kennen. Wie ich mich erinnere (ich werde das noch einmal überprüfen), wird der Pulse-Server als Benutzerprozess ausgeführt.


Können Sie bitte den ersten Punkt beweisen? Wie genau oder wo im Code macht es das? Es gibt viele Situationen, in denen CLI in TTY keine Option ist und Downloads und Backups das eigentliche Problem darstellen. Audio ist ein untergeordnetes Problem.
int_ua

0

Sie können eine screenSitzung über die CLI mit bash starten und in dieser Sitzung die Anwendung starten. Und jetzt können Sie dieses Terminal ohne Probleme schließen und mit dem screen -rBefehl wiederherstellen . Ist mehr oder weniger das:

screen bash
rsync -V xxx yyy

Und Sie können die CLI schließen und zurückgeben, was Sie wollen und tun:

screen -r

Zur Bestätigung ist die Arbeit erledigt. Ich weiß nicht, ob dies mit GUI-Apps funktioniert, die einen Befehl wie den folgenden verwenden:

nohup your-X-application &
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.