첫째, 문제는 사용자가 닫기 버튼을 클릭하고 터미널 자체(및 터미널에서 실행 중인 프로세스)가 명령줄에서 시작될 때 스크립트가 실행 중임을 사용자에게 알리는 방법입니다.
스크립트가 종료되기 전에 사용자가 실행 취소하려는 작업을 수행하는 스크립트가 있습니다. 사용자가 [enter]를 누를 때까지 프로세스를 일시 중지하는 읽기 문이 있습니다. 하지만 불운한 사용자들은 가끔 오른쪽 상단의 닫기 버튼 [x]을 클릭하기도 합니다. 닫기 버튼을 잡는 트랩을 찾지 못했지만 경고는 괜찮을 것입니다. gnome 터미널은 필요한 경고를 제공합니다.
하지만, 이 기능은 gnome-terminal이 스크립트(예: Thunar 사용자 정의 작업)에서 실행될 때 작동하지 않습니다. 이를 명확히 하려면 다음 스크립트를 고려하세요.
gnome-terminal --command="sh readx.sh"
여기서 readx.sh에는 한 줄이 포함됩니다: read x
오른쪽 상단의 [x] 버튼을 클릭하면 이렇게 실행된 터미널은 스크립트가 활성화된 동안 경고 없이 닫힙니다.
트래핑이나 경고 방법은 모두 나에게 효과적입니다.
답변1
예! zenity 팁을 포함하면 나에게 잘 작동합니다. nohup을 사용하고 zenity 프롬프트를 포함하여 스크립트를 실행하면 필요에 따라 스레드가 차단됩니다.
답변2
실제로 실행 중인 프로세스를 터미널 창에서 분리할 수 있으므로 readx.sh
gnome 터미널 창을 닫아도 백그라운드에서 계속 실행되어 예상되는 작업을 수행합니다. 이렇게 하려면 nohup
명령을 사용해야 합니다. 터미널에서 프로세스의 연결을 끊고 출력을 nohup.out으로 리디렉션한 후 마스크합니다 SIGHUP
.
다음 명령을 사용하여 테스트했습니다. gnome-terminal -e "nohup bash ./123.sh"
스크립트에는 123.sh
.txt만 포함되어 있으므로 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입니다.