창 관리자로 프로그램 시작하기

창 관리자로 프로그램 시작하기

창 관리자(pe XFCE)의 "하위"가 아닌 터미널에서 창 관리자로 프로그램을 시작하는 방법이 있습니까?

실행된 프로그램은 터미널(및 서버에 대한 현재 연결)에서 분리되어야 터미널 세션이 닫힌 후에도 계속 살아 있어야 합니다.

예를 들어 ssh(x-forward 또는 유사한 기능 없이)를 통해 서버에 연결하고, 브라우저를 시작하고, 연결을 닫는 것입니다. 서버 앞에 앉아서 최근에 열어본 브라우저는 아직도 실행중이군요. 창 관리자라는 새로운 "소유자"를 사용하여 내 SSH 세션에서 분리되었습니다.

답변1

쉘에서 프로세스를 분리하는 일반적인 방법은 다음과 같습니다.

  • 를 사용하여 백그라운드에서 실행한 &다음 다음을 사용하여 쉘에 추적을 중지하도록 요청합니다 disown.

    $ xterm &
    $ disown
    

    (또는 xterm & disown)

  • 을 사용하여 백그라운드에서 실행하고 도구 &를 사용하여 nohup종료되는 것을 방지합니다.

    $ nohup xterm &
    
  • 을 사용하여 백그라운드에서 실행 &하고 이중 포크를 사용하여 셸이 이를 추적하지 못하도록 합니다.

    $ (xterm &)
    
  • 다음을 사용하여 백그라운드에서 실행하십시오 setsid.

    $ setsid xterm
    

( (setsid xterm &)일부 옵션이 작동하지 않으면 시도해 보세요.)

답변2

xterm -e "bash -c \"./script.sh; exec bash\"" &

어디 ./script.sh단지 명령이 될 수 있습니다.

답변3

SSH를 사용하여 X 서버를 실행하는 시스템에 로그인하고 다음을 실행합니다.

DISPLAY=:0 xterm &

X 디스플레이에 xterm이 표시되어야 하며 SSH 세션을 닫을 때에도 열려 있어야 합니다.

X11 응용 프로그램은 DISPLAY환경 변수를 사용하여 X 서버를 찾습니다. 일반적인 값은 입니다 :0. 이는 X11 응용 프로그램이 Unix 도메인 소켓을 통해 로컬 X 서버에 연결되어야 함을 의미합니다 /tmp/X11-unix/X0.

X 세션 내에서 시작된 응용 프로그램은 DISPLAYX 서버를 가리키는 환경 변수를 상속하지만 X 세션 외부에서 시작된 프로세스(예: SSH 로그인)에는 해당 변수가 없습니다. 그렇기 때문에 SSH 로그인에서 X11 애플리케이션을 시작할 때 이를 명시적으로 설정해야 합니다.

관련 정보