Linux

如何在 linux 中找到未鎖定的 tty?

  • May 4, 2019

我剛剛發現,當我在後台打開一個 tty 時,我的鎖屏是沒用的。我有時會使用另一個 tty 來殺死某個程序,然後我忘記了解鎖的 tty。這就是為什麼我想在我的 polybar 中顯示一個符號來顯示我是否在後台解鎖了會話。

我發現getty@ttyX.service我切換到至少一次的每個 tty 都有一個 systemd 單元執行。但我無法確定會話是否仍處於登錄狀態。

你知道一種方法來檢查我是否在後台打開了 tty 會話嗎?

w命令列出帶有 shell 的使用者和相應的終端,所以

w | grep -e 'tty[0-9]'

如果存在打開的 TTY 會話,則返回 rc=0,否則返回 1。

如果loginctl知道您的會話,您可以使用它(複製How to return the current active user/session on a graphics Linux desktop session?):

for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }')
do loginctl show-session -p User -p Type -p Remote $sessionid | sort
done |
awk -F= '/Type/ { type = $2 } /Remote/ { remote = $2 } /User/ && remote == "no" && type == "tty" { sessions++ } END { print sessions }'

將計算目前打開的非遠端 tty 會話的數量。

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