терминал предупреждает о закрытии при открытии в скрипте

Во-первых, вопрос: как я могу предупредить пользователя о том, что скрипт запущен, когда пользователь нажимает кнопку закрытия, а сам терминал (и запущенный в нем процесс) запускается из командной строки.

У меня есть сценарий, который выполняет действия, которые пользователь захочет отменить до завершения сценария. Существует инструкция чтения, которая приостанавливает процесс до тех пор, пока пользователь не нажмет [enter]. Но, несчастный пользователь время от времени нажимает кнопку закрытия [x] в верхнем правом углу. Я не нашел ловушку, которая ловит кнопку закрытия, но предупреждение будет сделано. Гном-терминал обеспечивает необходимое предупреждение.

Но , когда gnome-терминал запускается из скрипта (скажем, пользовательского действия Thunar), функция не работает. Чтобы уточнить, рассмотрите сценарий:

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

Где readx.sh содержит одну строку: read x

При нажатии правой кнопки [x], запускаемый таким образом терминал закрывается без предупреждения, пока скрипт все еще активен.

Любой метод захвата или предупреждения будет работать для меня.

Да! Включение подсказки zenity работает хорошо для меня. Когда сценарий выполняется с nohup и включается приглашение zenity, поток будет блокироваться по желанию.

Фактически вы можете отключить процесс работы readx.sh из окна терминала, поэтому, даже если вы закроете окно терминала gnome, он будет продолжать работать в фоновом режиме и завершить то, что он должен делать. Чтобы сделать это, вы должны использовать команду nohup – она ​​отключает процесс от терминала, перенаправляет его вывод на nohup.out и защищает его от SIGHUP .

Я протестировал его с помощью следующей команды: gnome-terminal -e "nohup bash ./123.sh" Script 123.sh содержит только sleep 7 && ls -a > 1.txt . Итак, когда я запускаю предыдущую команду и закрываю окно gnome-терминала, файл 1.txt создается тем не менее.