Jak zapobiec automatycznym wstrzymywaniu procesów w nieaktywnej sesji użytkownika?

14

Przez chwilę teraz, kiedy przełączam się między dwiema sesjami użytkownika, nieaktywna w niektórych przypadkach przestanie wykonywać procesy GUI. W ten sposób jestem zmuszony czekać na załadowanie kolejnej sesji i nie mogę zrobić czegoś w innej, ponieważ jeśli przełączę się i wrócę po pewnym czasie, nadal będzie to samo. Dotyczy to oprogramowania rsync, rdiff-backup, procesów w tle KDE, Steam uruchomionego w sesji Openbox (nawet zatrzymanie pobierania) i przynajmniej niektórych gier. Nie ma to wpływu na VLC, przynajmniej przeskakuje do potrzebnego czasu po przełączeniu, ale przez chwilę widzę starą ramkę i czas w oknie.

Jaki proces jest odpowiedzialny za takie zachowanie? Czy mogę jakoś to zmienić?

Aktualizacja: wykorzystanie pamięci i zamiany

Dodatkowy kontekst: ironią jest to, że sugerowałem dokładnie takie zachowanie na starym brainstorm.ubuntu.com (teraz nieczynny).

int_ua
źródło
1
@ Fabby zrobione, to nie wygląda na problem wymiany, jeśli to sugerujesz.
int_ua
2
Tak, właśnie to sugerowałem ... ;-) Próbowałem symulować zachowanie, którego doświadczasz: zaloguj się jako użytkownik, a następnie zaloguj się jako użytkownik pomocniczy, uruchom film, [Ctrl] [Alt ] [F7] do pierwszego użytkownika, uruchom findwłączenie /, [ctrl] [Alt] [F8] do drugiego użytkownika i wszystko działa dalej ... (chociaż dźwięk filmu jest wyciszony podczas przełączania użytkowników.) Jak to zrobić testujesz?
Fabby
1
@int_ua Nie wiem konkretnie o Steam, ale miałem gry, które zawierają określony kod, który należy wstrzymać przy zmianie użytkowników ... Nie używam KDE, więc myślę, że nie mogę ci już pomóc ... Przepraszam!
Fabby,
1
Zarówno odnotowując stan wyjściowy przed i po przełączeniu do innego użytkownika, jak i zewnętrzne światło dysku twardego, zaprzestając wszelkiej aktywności podczas kolejnej sesji.
int_ua
2
bo rsyncużywasz verbosedo drukowania postępu? próbowałeś bez niego + czy próbowałeś wysłać go bezpośrednio w tło rsync .... &? Jak o nohup rsync .... & ? w przypadku GUI muszą one zawiesić, ponieważ istnieje tylko jeden zasób wyjściowy i jest on zajęty przez inną sesję użytkownika i zostaną wstrzymane
:)

Odpowiedzi:

1

Na ten problem też wpadam, ponieważ regularnie przełączam się między wirtualnymi terminalami konsolowymi i graficznymi. Xorg z założenia zawiesza swoich klientów podczas przełączników VT, dlatego wydaje się, że ich klienci „zamarzają”, gdy VT Xorga nie jest już aktywny. Wayland tego nie robi, więc jeśli programy, które chcesz pozostać uruchomione w tle VT, obsługują nowy protokół wyświetlania, użyj kompozytu Wayland zamiast Xorg.

Jednym ze sposobów obejścia tego problemu jest uruchomienie programów graficznych na lokalnym serwerze VNC, aby nigdy nie zostały zawieszone. Jest to obejście, którego najczęściej używam.


źródło
0

Jaki proces jest odpowiedzialny za takie zachowanie?

Display Manager (DM) to ten, którego szukasz. Ktoś: lightdm, gdm, kdm(stare kde) sddm(nowa kde), xdm...

Czy mogę jakoś to zmienić?

AFAIK, tak powinno być z X serwerem. Jednak pomijałem to zachowanie, używając:

  • Narzędzia CLI na innej wirtualnej konsoli TTY
  • Narzędzia CLI jako initusługa

Jeśli chodzi o strumienie audio, kiedy zacząłem używać GNU / Linux w 2006 roku. Urządzeniami audio zarządzano osobno od Display. Teraz wiele się zmieniło, szczególnie dzięki nowym zintegrowanym urządzeniom / portom, takim jak HDMI. Dlatego serwer Pulse powinien być świadomy niektórych zdarzeń wyświetlania X. Jak pamiętam (sprawdzę to ponownie), serwer Pulse jest uruchamiany jako proces użytkownika.

user.dz
źródło
Czy możesz udowodnić pierwszy punkt? Jak dokładnie lub gdzie w kodzie to robi? Istnieje wiele sytuacji, w których CLI w TTY nie jest opcją, a pobieranie i kopie zapasowe są prawdziwym problemem, audio jest niewielkim problemem.
int_ua
0

Możesz uruchomić screensesję z poziomu CLI za pomocą bash, a wewnątrz tej sesji możesz uruchomić aplikację. A teraz możesz bez problemu zamknąć ten Terminal i odzyskać za pomocą screen -rpolecenia. Jest mniej więcej to:

screen bash
rsync -V xxx yyy

Możesz zamknąć CLI i zwrócić wszystko, co chcesz i zrobić:

screen -r

Aby potwierdzić, że zadanie zostało wykonane. Nie wiem, czy to może działać z aplikacjami GUI za pomocą polecenia takiego jak:

nohup your-X-application &
manuti
źródło