Câu trả lời:
Bạn có thể nhìn vào $STY
biến (một biến được đặt bởi lệnh màn hình ). Nếu không phải là "" thì bạn đang ở trong một phiên màn hình.
Tôi đang ở trong màn hình
$ echo $STY
29624.pts-1.iain-10-04
$
Tôi không ở trong màn hình
$ echo $STY
$
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
Bạn có thể nhìn vào biến $ TERM.
echo $TERM
Nếu đó là một screen
phiên, biến thuật ngữ sẽ trả về "màn hình".
root@deore:/volumes# echo $TERM
screen
Ctrl-a -d (để thoát màn hình)
root@deore:/volumes# echo $TERM
xterm
Đồng thời kiểm tra: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-civerse-terminal-session-is-in-gnu-screen
"$TERM" = "screen"
dường như được bảo tồn khi vào sudo
môi trường, không giống như $STY
tùy chọn.
Trừ khi bạn đã thay đổi các ràng buộc khóa mặc định, bạn có thể thực hiện Ctrl+ a-> Ctrl+ t, sẽ hiển thị thời gian, nếu bạn đang ở trong màn hình. Điều này sẽ hoạt động ngay cả khi bạn có ssh: d đi nơi khác, không giống như các đề xuất khác.
Các caption
lệnh trong ~/.screenrc
là một cách tốt đẹp để phân biệt một phiên màn hình.
Cá nhân tôi đang sử dụng cái này:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Nó thêm một dòng như thế này ở dưới cùng của màn hình:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
Với phần đầu tiên (tên hệ thống + tải) có màu xanh lá cây và ngày có màu hồng. Hữu ích và khó bỏ lỡ!
Tôi đã tìm thấy một giải pháp khác:
Sửa đổi của bạn .screenrc
, vì vậy phiên màn hình của tôi trông hoàn toàn khác với thiết bị đầu cuối bình thường.
.screenrc
tệp ví dụ .
Làm a screen -ls
. Nó sẽ chỉ rõ ràng Attached
so với Detached
trạng thái.
Ví dụ đính kèm:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
Ví dụ tách ra:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)