Как предотвратить автоматическую приостановку процессов в неактивной сессии пользователя?

14

Какое-то время, когда я переключаюсь между двумя пользовательскими сеансами, неактивный в некоторых случаях прекращает выполнение процессов GUI. Таким образом, я вынужден ждать загрузки другого сеанса и не могу что-то сделать в другом, потому что, если я переключаюсь и возвращаюсь через некоторое время, он все еще находится в той же точке. Затрагиваемое программное обеспечение включает rsync, rdiff-backup, фоновые процессы KDE, Steam, запущенный в сеансе Openbox (даже загрузка останавливается) и, по крайней мере, некоторые игры. На VLC это не влияет, по крайней мере, он переходит на необходимое время после того, как я переключаюсь назад, но на мгновение я вижу старый кадр и время в его окне.

Какой процесс отвечает за такое поведение? Могу ли я перенастроить его как-нибудь?

Обновление: использование памяти и подкачки

Некоторый дополнительный контекст: Ирония в том, что я предложил именно такое поведение на старом brainstorm.ubuntu.com (ныне несуществующем).

int_ua
источник
1
@ Готово, не похоже, что это проблема подкачки, если ты на это намекаешь.
int_ua
2
Да, это то, что я имел в виду ... ;-) Я пытался смоделировать поведение, с которым вы сталкиваетесь: войдите в систему как пользователь, затем войдите в систему как дополнительный пользователь, запустите фильм, [Ctrl] [Alt ] [F7] для первого пользователя, начать findна /[Ctrl] [Alt] [F8] для второго пользователя и все продолжает работать ... (хотя звук фильма приглушается при переключении пользователей.) Как ты тестируешь?
Fabby
1
@int_ua Я не знаю конкретно о steam, но у меня были игры, которые содержат определенный код, который нужно ставить на паузу при переключении пользователей ... Я не использую KDE, поэтому думаю, что больше не могу вам помочь ... Извините!
Fabby
1
Обращая внимание на состояние вывода до и после переключения на другого пользователя, а также на внешнем индикаторе жесткого диска, прекращающем всю активность во время другого активного сеанса.
int_ua
2
для rsyncвы используете verboseдля печати прогресса? ты пробовал без него + пробовал с отправкой прямо в фон rsync .... &? Как насчет nohup rsync .... & ? для графического интерфейса они должны приостановить работу, потому что есть только один выходной ресурс, и он
занят

Ответы:

1

Я тоже столкнулся с этой проблемой, потому что регулярно переключаюсь между консольными и графическими виртуальными терминалами. Xorg по замыслу приостанавливает работу своих клиентов во время переключения VT, поэтому его клиенты, похоже, «зависают», когда VT Xorg больше не активен. Wayland этого не делает, поэтому, если программы, которые вам нужны для работы в фоновом режиме VT, поддерживают новый протокол отображения, используйте вместо Xorg композитор Wayland.

Одним из способов решения этой проблемы является запуск графических программ на локальном сервере VNC, чтобы они никогда не приостанавливались. Это обходной путь, который я использую чаще всего.


источник
0

Какой процесс отвечает за такое поведение?

Диспетчер отображения (DM) - это то, что вы ищете. Любой: lightdm, gdm, kdm(старый KDE), sddm(новый KDE), xdm...

Могу ли я перенастроить его как-нибудь?

AFAIK, так должно быть с X сервером. Тем не менее, я использовал, чтобы пропустить это поведение, используя:

  • Инструменты CLI на другой виртуальной консоли TTY
  • Инструменты CLI как initсервис

Что касается аудиопотоков, когда я начал использовать GNU / Linux в 2006 году. Аудиоустройства управлялись отдельно от Display. Теперь многое изменилось особенно с новыми интегрированными устройствами / портами, такими как HDMI. Таким образом, сервер Pulse должен знать о некоторых событиях X-дисплея. Как я помню (я перепроверю это), сервер Pulse запускается как пользовательский процесс.

user.dz
источник
Можете ли вы доказать первый пункт? Как именно или где в коде это делается? Есть много ситуаций, когда CLI в TTY не является опцией, а загрузка и резервное копирование - настоящая проблема, а аудио - незначительная проблема.
int_ua
0

Вы можете запустить screenсеанс из CLI с помощью bash, а внутри этого сеанса вы можете запустить приложение. И теперь вы можете без проблем закрыть этот Терминал и восстановить его с помощью screen -rкоманды. Это более или менее это:

screen bash
rsync -V xxx yyy

И вы можете закрыть CLI и вернуть все, что вы хотите и сделать:

screen -r

Для подтверждения работы сделано. Я не знаю, может ли это работать с приложениями с графическим интерфейсом, используя такую ​​команду:

nohup your-X-application &
manuti
источник