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