Як запобігти автоматичному призупиненню процесів у неактивних сеансах користувача?


14

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

Який процес відповідає за таку поведінку? Чи можу я його якось переналаштувати?

Оновлення: використання пам'яті та заміни

Деякий додатковий контекст: Іронія полягає в тому, що я запропонував цю точну поведінку на старому brainstorm.ubuntu.com (зараз не існує).


1
@Fabby зроблено, це не схоже на проблему свопу, якщо це ви маєте на увазі.
int_ua

2
Так, це я мав на увазі ... ;-) Я намагався імітувати поведінку, яку ви переживаєте: увійдіть як користувач, потім увійдіть як вторинний користувач, запустіть фільм, [Ctrl] [Alt ] [F7] до першого користувача, запустіть findувімкнено /, [ctrl] [Alt] [F8] другому користувачеві, і все продовжує працювати ... (хоча звук фільму приглушений при переключенні користувачів.) Як робити ви тестуєте?
Fabby

1
@int_ua Я не знаю конкретно про пару, але у мене були ігри, які містять певний код, який потрібно призупинити при переключенні користувачів ... Я не використовую KDE, тому, думаю, більше не можу вам допомогти ... Вибачте!
Fabby

1
Як відзначають вихідний стан до та після переходу на іншого користувача, так і зовнішнім світлом жорсткого диска, припиняючи всю активність під час активного іншого сеансу.
int_ua

2
для rsyncви використовуєте verboseдля друку прогресу? ви пробували без нього + чи намагалися ви надсилати його безпосередньо на другий план rsync .... &? Як щодо nohup rsync .... & ? для GUI вони повинні призупинити, тому що є лише один вихідний ресурс, і це займе інший сеанс користувача, і вони призупиняться
:)

Відповіді:


1

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

Один із способів вирішити цю проблему - запустити графічні програми на локальному сервері VNC, щоб вони ніколи не були призупинені. Це рішення, яке я використовую найчастіше.


0

Який процес відповідає за таку поведінку?

Менеджер дисплеїв (DM) - це той, кого ви шукаєте. Будь-: lightdm, gdm, kdm(старий KDE), sddm(новий KDE), xdm...

Чи можу я його якось переналаштувати?

AFAIK, так має бути з X сервером. Однак я пропускав таку поведінку, використовуючи:

  • Інструменти CLI на іншій віртуальній консолі TTY
  • Інструменти CLI як initсервіс

Що стосується аудіо потоків, коли я почав використовувати GNU / Linux у 2006 році. Аудіопристроями керували окремо від Display. Тепер все значно змінилося з новими інтегрованими пристроями / портами, такими як HDMI. Тому Pulse-сервер повинен знати про деякі X-події. Як я пам’ятаю (я повторно перевірю це), сервер Pulse запускається як користувальницький процес.


Чи можете ви, будь ласка, довести перший пункт? Як саме або де в коді це робиться? Існує багато ситуацій, коли CLI в TTY - це не варіант, а завантаження та резервне копіювання - справжня проблема, звук - незначна проблема.
int_ua

0

Ви можете запустити screenсеанс із CLI з bash, і всередині цього сеансу можна запустити програму. А тепер ви можете без проблем закрити цей Термінал і відновити за допомогою screen -rкоманди. Більш-менш це:

screen bash
rsync -V xxx yyy

І ви можете закрити CLI і повернути все, що завгодно і зробити:

screen -r

Для підтвердження роботи зроблено. Я не знаю, чи це може працювати з програмами GUI за допомогою команди типу:

nohup your-X-application &
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.