
首先,問題是:當使用者點擊關閉按鈕並且終端本身(以及其中運行的進程)從命令列啟動時,如何警告使用者腳本正在運行。
我有一個腳本,它執行用戶在腳本終止之前想要撤消的操作。有一個讀取語句會暫停這個過程,直到使用者點擊 [enter]。但是,不幸的用戶偶爾會點擊右上角的關閉按鈕 [x]。我還沒有找到捕獲關閉按鈕的陷阱,但警告就可以了。 gnome 終端提供所需的警告。
但,當從腳本(例如 Thunar 自訂操作)啟動 gnome-terminal 時,此功能不起作用。為了澄清這一點,請考慮以下腳本:
gnome-terminal --command="sh readx.sh"
其中 readx.sh 包含一行: 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。