터미널은 스크립트 내에서 열 때 닫힐 때 경고합니다.

터미널은 스크립트 내에서 열 때 닫힐 때 경고합니다.

첫째, 질문: 사용자가 닫기 버튼을 클릭하고 터미널 자체(및 터미널에서 실행 중인 프로세스)가 명령줄에서 시작되었을 때 스크립트가 실행 중임을 사용자에게 어떻게 경고할 수 있습니까?

스크립트가 종료되기 전에 사용자가 되돌리고 싶은 작업을 수행하는 스크립트가 있습니다. 사용자가 [enter]를 누를 때까지 프로세스를 일시 중지하는 읽기 문이 있습니다. 그러나 불운한 사용자는 때때로 오른쪽 상단에 있는 닫기 버튼 [x]을 클릭합니다. 닫기 버튼을 잡는 트랩을 찾지 못했지만 경고는 가능할 것입니다. 그놈 터미널은 필요한 경고를 제공합니다.

하지만, gnome 터미널이 스크립트(예: Thunar 사용자 정의 작업)에서 시작되면 기능이 작동하지 않습니다. 명확히 하려면 다음 스크립트를 고려하세요.

gnome-terminal --command="sh readx.sh"

readx.sh에 한 줄이 포함되어 있는 경우: read x

오른쪽 상단 [x] 버튼을 클릭하면 스크립트가 활성 상태인 동안 이 방법으로 시작된 터미널이 경고 없이 닫힙니다.

트래핑이나 경고 방법은 모두 나에게 효과적입니다.

답변1

예! zenity 프롬프트를 포함하면 나에게 잘 작동합니다. 스크립트가 nohup으로 실행되고 zenity 프롬프트가 포함되면 스레드가 원하는 대로 차단됩니다.

답변2

실제로 터미널 창에서 실행되는 프로세스를 분리할 수 있으므로 readx.shgnome 터미널 창을 닫아도 백그라운드에서 계속 실행되어 수행해야 하는 작업이 완료됩니다. 이렇게 하려면 nohup명령을 사용해야 합니다. 명령은 터미널에서 프로세스 연결을 끊고 출력을 nohup.out으로 리디렉션하고 SIGHUP.

다음 명령으로 테스트했습니다. gnome-terminal -e "nohup bash ./123.sh" 스크립트 123.sh에는 sleep 7 && ls -a > 1.txt. 그래서 이전 명령을 실행하고 gnome-terminal 창을 닫아도 1.txt 파일이 생성됩니다.

답변3

문제를 해결하기 위해 이 명령을 시도했습니다.

Exec=mate-terminal -e "bash -i  -c 'ssh my.server';bash"

mate-terminal이 명령은 가 아닌 에서 테스트되었습니다 gnome-terminal.

mate-terminal버전은 CentOS7에서 1.16.3입니다.

관련 정보