Comment empêcher les processus de pause automatique dans une session utilisateur inactive?


14

Depuis un moment maintenant, lorsque je bascule entre deux sessions utilisateur, la session inactive dans certains cas arrête d'exécuter les processus GUI. De cette façon, je suis obligé d'attendre qu'une autre session se charge et je ne peux pas faire quelque chose dans une autre, car si je change et reviens après un moment, c'est toujours sur le même point. Le logiciel concerné comprend rsync, rdiff-backup, les processus d'arrière-plan KDE, Steam lancé en session Openbox (même le téléchargement s'arrête) et au moins certains jeux. VLC n'est pas affecté, au moins il passe au temps nécessaire après que je revienne en arrière, mais pendant un moment, je peux voir l'ancien cadre et l'heure dans sa fenêtre.

Quel processus est responsable d'un tel comportement? Puis-je le reconfigurer d'une manière ou d'une autre?

Mise à jour: utilisation de la mémoire et des swaps

Un contexte supplémentaire: L'ironie est que j'ai suggéré ce comportement exact sur l'ancien brainstorm.ubuntu.com (maintenant disparu).


1
@Fabby fait, cela ne ressemble pas à un problème de swap si c'est ce que vous sous-entendez.
int_ua

2
Oui, c'est ce que j'impliquais ... ;-) J'ai essayé de simuler le comportement que vous rencontrez en: connectez-vous en tant qu'utilisateur, puis connectez-vous en tant qu'utilisateur secondaire, démarrez un film, [Ctrl] [Alt ] [F7] pour le premier utilisateur, démarrer une findsur /[Ctrl] [Alt] [F8] pour le deuxième utilisateur et tout continue à fonctionner ... (bien que le son du film est mis en sourdine lors du passage des utilisateurs.) Comment vous testez?
Fabby

1
@int_ua Je ne connais pas spécifiquement Steam, mais j'ai eu des jeux qui contiennent du code spécifique à suspendre lors du changement d'utilisateur ... Je n'utilise pas KDE donc je pense que je ne peux pas vous aider davantage ... Désolé!
Fabby

1
En notant à la fois l'état de sortie avant et après le passage à un autre utilisateur et par un voyant du disque dur externe cessant toute activité pendant une autre session active.
int_ua

2
pour rsyncvous utilisez verbosepour imprimer la progression? avez-vous essayé sans cela + avez-vous essayé de l'envoyer directement en arrière rsync .... &- plan ? Et alors nohup rsync .... & ? pour l'interface graphique, ils doivent suspendre car il n'y a qu'une seule ressource de sortie et elle est prise par une autre session utilisateur et ils se mettront en pause
:)

Réponses:


1

Je rencontre également ce problème car je bascule régulièrement entre la console et les terminaux virtuels graphiques. Xorg by design suspend ses clients pendant les commutateurs VT, c'est pourquoi ses clients semblent "geler" lorsque le VT de Xorg n'est plus actif. Wayland ne le fait pas, donc si les programmes dont vous avez besoin pour continuer à fonctionner en arrière-plan VT prennent en charge le nouveau protocole d'affichage, utilisez un compositeur Wayland au lieu de Xorg.

Une façon de contourner ce problème consiste à exécuter des programmes graphiques sur un serveur VNC local afin qu'ils ne soient jamais suspendus. C'est la solution de contournement que j'utilise le plus fréquemment.


0

Quel processus est responsable d'un tel comportement?

Le gestionnaire d'affichage (DM) est celui que vous recherchez. Tout le monde: lightdm, gdm, kdm(ancien kde), sddm(nouveau kde), xdm...

Puis-je le reconfigurer d'une manière ou d'une autre?

AFAIK, Cela devrait être ainsi avec le serveur X. Cependant, j'avais l'habitude d'ignorer ce comportement en utilisant:

  • Outils CLI sur une autre console virtuelle TTY
  • Outils CLI en tant que initservice

Concernant les flux audio, quand j'ai commencé à utiliser GNU / Linux en 2006. Les périphériques audio étaient gérés séparément de Display. Maintenant, les choses ont beaucoup changé, spécialement avec les nouveaux appareils / ports intégrés comme HDMI. Le serveur Pulse doit donc être au courant de certains événements d'affichage X. Si je me souviens bien (je revérifierai cela), le serveur Pulse est exécuté en tant que processus utilisateur.


Pouvez-vous s'il vous plaît prouver le premier point? Comment exactement ou où dans le code cela fait-il? Il y a beaucoup de situations où CLI en TTY n'est pas une option et les téléchargements et les sauvegardes sont le vrai problème, l'audio est un problème mineur.
int_ua

0

Vous pouvez lancer une screensession à partir de la CLI avec bash et à l'intérieur de cette session, vous pouvez lancer l'application. Et maintenant, vous pouvez fermer ce terminal sans problème et récupérer à l'aide de la screen -rcommande. Est plus ou moins ceci:

screen bash
rsync -V xxx yyy

Et vous pouvez fermer la CLI et retourner tout ce que vous voulez et faites:

screen -r

Pour confirmer que le travail est terminé. Je ne sais pas si cela peut fonctionner avec des applications GUI en utilisant une commande comme:

nohup your-X-application &
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.