スクリプト内で開かれた場合、ターミナルを閉じるときに警告する

スクリプト内で開かれた場合、ターミナルを閉じるときに警告する

まず、質問です。ユーザーが閉じるボタンをクリックし、ターミナル自体 (およびその中で実行されているプロセス) がコマンド ラインから開始されたときに、スクリプトが実行中であることをユーザーに警告するにはどうすればよいでしょうか。

スクリプトが終了する前にユーザーが元に戻したいアクションを実行するスクリプトがあります。ユーザーが [Enter] キーを押すまでプロセスを一時停止する読み取りステートメントがあります。しかし、不運なユーザーは、右上隅にある閉じるボタン [x] をクリックすることがあります。閉じるボタンをキャッチするトラップは見つかりませんでしたが、警告は有効です。gnome-terminal は必要な警告を提供します。

しかしただし、gnome-terminal がスクリプト (Thunar カスタム アクションなど) から起動された場合、この機能は動作しません。明確にするために、次のスクリプトを検討してください。

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

readx.shには次の1行が含まれます: read x

右上の [x] ボタンをクリックすると、この方法で起動されたターミナルは、スクリプトがまだアクティブな間は警告なしに閉じられます。

私にとっては、罠や警告のためのどんな方法も有効です。

答え1

はい。zenity プロンプトを含めるとうまく機能します。スクリプトが nohup で実行され、zenity プロンプトが含​​まれている場合、スレッドは希望どおりにブロックされます。

答え2

実際に、実行中のプロセスをreadx.shターミナル ウィンドウから切り離すことができるので、gnome-terminal ウィンドウを閉じても、バックグラウンドで実行が継続され、実行すべき作業が完了します。これを行うには、コマンドを使用する必要があります。この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 です。

関連情報