Sim! Incluindo um prompt de zenity funciona bem para mim. Quando o script é executado com nohup e um prompt zenity é incluído, o thread será bloqueado conforme desejado.
Primeiro, a pergunta: Como posso avisar o usuário que um script está sendo executado quando o usuário clica no botão Fechar e o próprio terminal (e o processo em execução nele) foi iniciado a partir da linha de comando.
Eu tenho um script que executa ações que o usuário desejará reverter antes que o script termine. Há uma instrução de leitura que pausa o processo até que o usuário pressione [enter]. Mas, um usuário infeliz ocasionalmente clicará no botão fechar [x] no canto superior direito. Eu não encontrei uma armadilha que pega o botão de fechamento, mas um aviso serve. O gnome-terminal fornece o aviso necessário.
Mas , quando o terminal gnome é iniciado a partir de um script (por exemplo, uma ação personalizada do Thunar), o recurso não funciona. Para esclarecer, considere o script:
gnome-terminal --command="sh readx.sh"
Onde readx.sh contém uma única linha: read x
Ao clicar no botão superior direito [x], um terminal iniciado dessa maneira é fechado sem aviso enquanto o script ainda está ativo.
Qualquer método de trapping ou aviso funcionará para mim.
Sim! Incluindo um prompt de zenity funciona bem para mim. Quando o script é executado com nohup e um prompt zenity é incluído, o thread será bloqueado conforme desejado.
Você pode realmente destacar o processo de execução de readx.sh
da janela do terminal, portanto, mesmo se você fechar a janela do gnome-terminal, ela continuará a ser executada em segundo plano e concluirá o que deve ser feito. Para fazer isso, você deve usar o comando nohup
- ele desconecta o processo do terminal, redireciona sua saída para nohup.out e o protege de SIGHUP
.
Eu testei com o seguinte comando: gnome-terminal -e "nohup bash ./123.sh"
O script 123.sh
contém apenas sleep 7 && ls -a > 1.txt
. Então, quando eu executo o comando anterior e fecho a janela do gnome-terminal, o arquivo 1.txt é criado mesmo assim.
Tags shell shell-script