我可以僅為虛擬控制台設置 bash 超時嗎 (ctrl+alt+{f1-f6})
我知道我可以設置一個
TMOUT
變數以在指定的不活動時間後自動結束 bash 會話。但是,我想要的只是將其應用於我的 6 個內置虛擬控制台,這些控制台可以通過ctrl
+alt
{F1
…F6
} 訪問。當我想打開終端時,我幾乎總是使用終端應用程序。當我離開我的電腦時,我會鎖定螢幕,以防止任何人訪問這些終端。所以我不想對這些有超時。
但是,在極少數情況下,我會使用我的一個虛擬控制台在我的電腦上工作。通常這是由於我的主要 Gnome 會話被凍結或無法使用。我殺死了有問題的應用程序,然後切換回我的主會話。
最重要的是,有幾次我在恢復 Gnome 會話時忘記退出虛擬控制台。因此,如果我走開,我的電腦將完全不受保護,因為在 Gnome 上鎖定螢幕只會鎖定 GUI;使用者可以切換到虛擬控制台並殺死我的 gnome 鎖屏或以其他方式弄亂我的電腦。
我可以只為內置虛擬控制台設置超時值,同時允許終端應用程序會話無限期保持非活動狀態嗎?
您可以檢查您是否在圖形終端中執行,
TMOUT
如果不是,則僅設置。一個簡單的方法是tty
命令:tty - print the file name of the terminal connected to standard input
從 GUI 終端模擬器執行時:
$ tty /dev/pts/5
從虛擬控制台執行時:
$ tty /dev/tty2
因此,將這些行添加到您
~/.profile
應該在十分鐘後終止您的 bash 會話:tty | grep tty >/dev/null && TMOUT=600
我從不喜歡 TMOUT 解決方案。首先,因為它只有在您在提示時離開會話時才有效;如果你把它留在 Vim 中,甚至在 sudo 密碼提示符下,它不會超時。其次,我不希望會話被關閉,我希望它被鎖定,就像圖形環境一樣。
GNU Screen 能夠在空閒期後鎖定,所以我做了以下操作。在我的一開始
~/.bashrc
我添加了這個:if [ "$TERM" = "linux" ] && tty | egrep -q '^/dev/tty[[:digit:]]+$' then exec screen -c ~/.ttyscreenrc fi
這
exec
很重要,因為它確保screen
替換 Bash,並且當它結束時,TTY 會話將被關閉。我
~/.ttyscreenrc
放了這個:startup_message off idle 180 lockscreen
跳過螢幕的歡迎螢幕並在 3 分鐘不活動後鎖定。