비활성 사용자 세션에서 자동 일시 중지 프로세스를 방지하는 방법


14

잠시 동안 두 사용자 세션 간을 전환하면 일부 경우 비활성 세션이 GUI 프로세스 실행을 중지합니다. 이렇게하면 다른 세션이로드 될 때까지 대기하고 다른 세션에서 무언가를 수행 할 수 없습니다. 잠시 후에 전환하고 돌아 오면 여전히 같은 지점에 있기 때문입니다. 영향을받는 소프트웨어에는 rsync, rdiff-backup, KDE 백그라운드 프로세스, Openbox 세션에서 시작된 Steam (다운로드 중지) 및 일부 게임이 포함됩니다. VLC는 영향을받지 않습니다. 적어도 전환 한 후 필요한 시간으로 건너 뛰지 만 잠시 동안 창에서 오래된 프레임과 시간을 볼 수 있습니다.

그러한 행동에 어떤 책임이 있습니까? 어떻게 든 재구성 할 수 있습니까?

업데이트 : 메모리 및 스왑 사용량

몇 가지 추가 맥락 : 아이러니는 오래된 brainstorm.ubuntu.com (현재 기능 상실) 에서이 정확한 행동을 제안했습니다.


1
@Fabby 완료, 그것이 당신이 암시하는 스왑 문제처럼 보이지 않습니다.
int_ua

2
그래, 그게 내가 암시 한거야 ... ;-) 나는 당신이 겪고있는 행동을 흉내 내기 위해 노력했다 : 사용자로 로그온 한 다음, 2 차 사용자로 로그온하고, 영화를 시작하라, [Ctrl] [Alt ] [F7]을 첫 번째 사용자에게, findon을 시작하고 /, [ctrl] [Alt] [F8]을 두 번째 사용자에게 돌리면 모든 것이 계속 실행됩니다 ... 당신은 테스트?
Fabby

1
@int_ua 스팀에 대해서는 잘 모르지만 사용자 전환시 일시 중지 할 특정 코드가 포함 된 게임이 있습니다 ... KDE를 사용하지 않으므로 더 이상 도와 드릴 수 없습니다 ... 죄송합니다!
Fabby

1
다른 사용자로 전환하기 전과 후의 출력 상태와 외부 HDD 표시등을 통해 다른 세션이 활성화되는 동안 모든 활동이 중단됩니다.
int_ua

2
를 위해 rsync당신이 사용하고 verbose진행 상황을 인쇄하려면? 당신은 그것없이 시도 + 당신은 배경으로 직접 보내는 시도 rsync .... &했습니까? 어때요 nohup rsync .... & ? GUI의 경우 출력 리소스가 하나만 있고 다른 사용자 세션이 가져 와서 일시 중지해야합니다.)
αғsнιη

답변:


1

콘솔과 그래픽 가상 터미널 사이를 정기적으로 전환하기 때문에이 문제도 발생합니다. Xorg는 VT 스위치 동안 클라이언트를 일시 중단시키기 때문에 Xorg의 VT가 더 이상 활성화되지 않으면 클라이언트가 "동결"되는 것처럼 보입니다. Wayland는 지원하지 않으므로 백그라운드 VT에서 계속 실행해야하는 프로그램이 새로운 디스플레이 프로토콜을 지원하는 경우 Xorg 대신 Wayland 컴포 지터를 사용하십시오.

이 문제를 해결하는 한 가지 방법은 로컬 VNC 서버에서 그래픽 프로그램을 실행하여 중단되지 않도록하는 것입니다. 이것이 내가 가장 자주 사용하는 해결 방법입니다.


0

그러한 행동에 어떤 책임이 있습니까?

디스플레이 관리자 (DM)가 찾고 있습니다. 사람 : lightdm, gdm, kdm(구 KDE), sddm(새 KDE), xdm...

어떻게 든 재구성 할 수 있습니까?

AFAIK, X 서버에서도 그렇게해야합니다. 그러나 다음을 사용하여 해당 동작을 건너 뛰었습니다.

  • 다른 가상 콘솔 TTY의 CLI 도구
  • init서비스 로서의 CLI 도구

오디오 스트림과 관련하여 2006 년 GNU / Linux를 사용하기 시작했습니다. 오디오 장치는 Display와 별도로 관리되었습니다. 이제 HDMI와 같은 새로운 통합 장치 / 포트를 통해 상황이 크게 달라졌습니다. 따라서 Pulse 서버는 일부 X 디스플레이 이벤트를 알고 있어야합니다. 내가 기억하는 것처럼 (이것을 다시 확인하겠습니다) Pulse 서버는 사용자 프로세스로 실행됩니다.


첫 번째 요점을 증명해 주시겠습니까? 코드에서 정확히 또는 어디 에서이 작업을 수행합니까? TTY의 CLI가 옵션이 아니며 다운로드 및 백업이 실제 문제이고 오디오가 사소한 문제인 경우가 많습니다.
int_ua

0

screenbash를 사용하여 CLI에서 세션을 시작할 수 있으며이 세션에서 응용 프로그램을 시작할 수 있습니다. 이제 문제없이이 터미널을 닫고 screen -r명령을 사용하여 복구 할 수 있습니다 . 이보다 더 많거나 적습니다.

screen bash
rsync -V xxx yyy

그리고 CLI를 닫고 원하는대로 수행 할 수 있습니다.

screen -r

작업이 완료되었는지 확인합니다. 이것이 다음과 같은 명령을 사용하여 GUI 응용 프로그램에서 작동 할 수 있는지 모르겠습니다.

nohup your-X-application &
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.