터미널 창에서 실행 중인 명령 분리

터미널 창에서 실행 중인 명령 분리

원격 세션을 시작하기 위해 Gnome에서 다음 .desktop 파일을 실행합니다.

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=xfreerdp RDP
Comment=A sample application
Exec=/usr/bin/xfreerdp +clipboard +smart-sizing -decorations /u:myuser /d:DOMAIN /v:pc.domain.com /f /kbd:0x00000807 /fonts
Icon=/home/user/.local/share/applications/rdp.png
Terminal=true

그러면 세션 비밀번호를 입력할 수 있는 터미널 창이 열립니다. 비밀번호를 입력한 후 세션이 시작됩니다. 이제 터미널을 닫으면 원격 세션도 닫힙니다.

어떻게 하면 이를 방지할 수 있나요?

지금까지 시도한 것은 xfreerdp를 직접 시작하고 '&'를 사용하여 generateig를 실행하는 bash 스크립트를 실행하는 것이었지만 작동하지 않습니다. 다음과 같습니다.

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=xfreerdp RDP
Comment=A sample application
Exec=/home/user/.local/share/applications/xfreerdp.sh
Icon=/home/user/.local/share/applications/rdp.png
Terminal=true

이것은 xfreerdp.sh 스크립트입니다:

echo "password:"
read p
/usr/bin/xfreerdp +clipboard +smart-sizing -decorations /p:$p /u:user /d:DOMAIN /v:pc.domain.com /f /kbd:0x00000807 /fonts & 

답변1

이에 대한 몇 가지 가능한 이유가 있습니다. 한 가지 가능한 이유는 터미널을 닫을 때 STDOUT/STDERR이 닫히고 프로그램이 무언가를 출력하려고 하면 프로그램이 종료될 수 있다는 것입니다. 이 문제를 해결하려면 명령을 다음으로 리디렉션하세요 /dev/null.

/usr/bin/xfreerdp <ARGS> 1>/dev/null 2>&1 & 

그러나 이것이 반드시 문제에 대해 선호되는 해결책은 아닙니다(댓글에 대한 귀하의 답변에 따라 작동하더라도). 이러한 상황에 대한 모범 사례를 찾으려면 자세히 읽어보세요.

또 다른 가능한 원인은 사용 중인 터미널 에뮬레이터( xterm/ konsole등)가 전송 중일 수 있다는 것입니다.한숨을 쉬다종료 시 자식에게 신호를 보내고 해당 신호로 인해 자식이 종료될 수 있습니다. 이 문제를 해결하려면 다음을 사용하여 명령을 실행할 수 있습니다 nohup.

중단의 영향을 받지 않는 명령을 실행하고 tty가 아닌 명령으로 출력합니다.

또한 nohup실행하는 명령의 STDOUT/STDERR을 파일로 리디렉션합니다. 매뉴얼 페이지에서:

       If  the  standard output is a terminal, all output written by the named
       utility to its standard output shall be appended to the end of the file
       nohup.out  in  the current directory. If nohup.out cannot be created or
       opened for appending, the output shall be appended to the  end  of  the
       file nohup.out in the directory specified by the HOME environment vari-
       able.

따라서 이 명령을 사용하면 리디렉션을 수행할 필요가 없습니다.

nohup /usr/bin/xfreerdp <ARGS> & 

관련 정보