![SSH를 통해 원격으로 로그인할 때 쉘 스크립트에서 새 gnome 터미널을 시작할 수 없습니다](https://linux55.com/image/148507/SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%9B%90%EA%B2%A9%EC%9C%BC%EB%A1%9C%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%A0%20%EB%95%8C%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%83%88%20gnome%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%9D%84%20%EC%8B%9C%EC%9E%91%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
배경: Windows 컴퓨터에서 Putty를 통해 Linux 컴퓨터에 SSH로 연결합니다. 저는 Windows에서 VcXsrv를 실행하고 SSH를 통해 X를 전달하고 있습니다. 이 모든 것이 예상대로 작동합니다.
새 모니터에서 그놈 터미널을 여는 데 문제가 있습니다Bash 스크립트를 통해 명령을 실행할 때.
콘솔에서 직접 이 명령을 실행하면 새 터미널 서버가 시작되고 서버에 연결된 gnome 터미널 세션을 시작할 수 있습니다.
$ /usr/libexec/gnome-terminal-server --app-id my.foo &
[1] 29553
$ gnome-terminal --app-id my.foo
$
그러나 동일한 명령을 쉘 스크립트에 넣으면 다음 오류가 발생합니다.
startGnomeTerm.sh의 내용
#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
gnome-terminal --app-id my.foo
스크립트를 실행할 때
$ ./startGnomeTerm.sh
# Error creating terminal: The name my.foo was not provided by any .service files
나는 심지어 실행하여 스크립트와 모든 쉘 변수를 공유하려고 시도했습니다.
$ export > shell_vars
그런 다음 스크립트 시작 부분에 넣으십시오.
#!/bin/bash
source shell_vars
....
-고쳐 쓰다-
해결책은 명령 사이에 약간의 지연을 추가하는 것입니다. 서버 설정은 스크립트에서 허용하는 것보다 시간이 오래 걸리므로 서버가 실제로 실행되기 전에 터미널이 연결을 시도합니다.
작업 스크립트:
#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
sleep 0.5
gnome-terminal --app-id my.foo
답변1
위에서 언급한 바와 같이, 터미널 서버 시작과 새 터미널 열기 사이에 절전 모드가 발생하는 타이밍 문제. :)