Bash

我可以僅為虛擬控制台設置 bash 超時嗎 (ctrl+alt+{f1-f6})

  • May 3, 2018

我知道我可以設置一個TMOUT變數以在指定的不活動時間後自動結束 bash 會話。但是,我想要的只是將其應用於的 6 個內置虛擬控制台,這些控制台可以通過ctrl+ alt{ F1F6} 訪問。

當我想打開終端時,我幾乎總是使用終端應用程序。當我離開我的電腦時,我會鎖定螢幕,以防止任何人訪問這些終端。所以我不想對這些有超時。

但是,在極少數情況下,我會使用我的一個虛擬控制台在我的電腦上工作。通常這是由於我的主要 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 分鐘不活動後鎖定。

引用自:https://unix.stackexchange.com/questions/99110