Ekran oturumunda olup olmadığımı nasıl kontrol edebilirim?


75

Şu anda ekran oturumunda olup olmadığımı kontrol etmek bir şekilde mümkün mü? Ctrl + d tuşlarına basmanın beni sunucudan mı keseceğini yoksa yalnızca geçerli ekranı kapatıp kapatmayacağına karar vermem gerekiyor. Teşekkürler.

Yanıtlar:


107

$STYDeğişkene bakabilirsiniz ( ekran komutunun ayarladığı değişken ). Eğer "" değilse, o zaman bir ekran oturumundasınız.

Ekrandayım

$ echo $STY 
29624.pts-1.iain-10-04
$

Ekranda değilim

$ echo $STY

$

12
Bu, hala yerel bilgisayarda çalışan bir oturumda olduğunuzu varsayar. Ekranı başlatır ve sonra başka bir yerde SSH yaparsanız, bu işe yaramaz.
David Mackintosh

2
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
aggregate1166877

2
@DavidMackintosh başka bir yere SSH'deyseniz, ctrl-D'ye basmak "beni sunucudan keser", bu da tam olarak sorulan şey.
womble

1
@ aggregate1166877 Şimdi kullandığım her makinede takma ad olarak yayınladıysanız bunu yapıyorum.
Eduardo Bezerra

44

$ TERM değişkenine bakabilirsiniz.

echo $TERM

Eğer bir screenoturumsa değişken değişkeni "screen" döndürmelidir.

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (ekrandan çıkmak için)

root@deore:/volumes# echo $TERM
xterm

Ayrıca şunları kontrol edin: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen


4
Bu, bir sebepten dolayı TERM değerinizi kasıtlı olarak karıştırmadığınızı varsayar.
David Mackintosh

1
TERM değişkeninizi ekran içinde değiştiriyorsanız, kendinize her türlü soruna davet ediyorsunuz.
womble

Solaris 2.6 düğümlerim TERM değerlerinin ekran değerlerine ayarlanmasıyla iyi oynamıyor.
David Mackintosh

3
"$TERM" = "screen"sudoBu $STYseçenek aksine, çevreye girerken korunmuş gibi görünüyor .
Melebius,

29

Varsayılan tuş ciltlemelerini değiştirmediyseniz, ekrandaysanız, saati gösteren Ctrl+ a-> Ctrl+ düğmelerini kullanabilirsiniz t. Bu, diğer önerilerin aksine, başka bir yerde ssh: d olsa bile çalışacaktır.


4
Neden bunu telafi etmiyoruz.
AndreKR

Bu kesinlikle buradaki en iyi çözüm.
Felix Jen,

2
@ womble Anahtar dizilere ve komutlara cevap olarak rastgele yıkıcı şeyler yapabilen bilinmeyen bir programdaysanız, hiçbir şey güvenli değildir.
Gurgeh

2
@AndreKR: Bir senaryoda çalışmıyor
Frank Meulenaar

1
Bir ekranda ve başka bir ekranda tarama yapmak için can atmıyorum ve kelimenin tam anlamıyla $ STY ayarlanmış mı diye bakmam gerekiyor. hangi nedenle boş geliyor.
Brian Thomas

14

Bu captionkomut, ~/.screenrcbir ekran oturumunu ayırt etmenin güzel bir yoludur.

Şahsen bunu kullanıyorum:

$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"

Ekranın altına buna benzer bir çizgi ekler:

Screen session on gbook (system load: 1,75 1,74 1,68)                   Lun 05.01.2015 13:01

İlk kısım (sistem adı + yük) yeşil, tarih ise pembe renktedir. Faydalı ve kaçırmak zor!


Bu harika! Bu şekilde olmaz (alt pozisyon), her zaman görünür (ve renkli) ve sistem hakkında faydalı bilgiler sağlar. Bunu da burada yayınladım. Stackoverflow.com/a/43571028/2450431
hrvoj3e

6

Başka bir çözüm buldum:
Değiştir .screenrc, bu yüzden ekran oturumum normal terminalden tamamen farklı görünüyor.


Ne önerdiğini biliyorum ve bazı durumlarda bu sorunu tamamen ortadan kaldırabilir . Örnek bir .screenrcdosya göstererek (örn.) Ne demek istediğinizi açıklarsanız daha yararlı olabilir .
jvriesem

0
screen -ls

oturumlarınızı görüntülemek için ve

screen -r sessioninfo

bağlantısı kesilmişse, bağlantısı kesilmişse

screen -D -r sessioninfo

bağlantısı kesilmiş bir bağlantıya


1
Bu soruya cevap vermiyor.
womble

-1

Bir screen -ls. Açıkça durum Attachedkarşısında olduğunu gösterecek Detached.

Ekli örnek:

$ screen -ls | grep tached
3132.pts-0.esavo00      (Attached)

Örnek müstakil:

$ screen -ls |grep tached
3132.pts-0.esavo00  (Detached)

6
Başka bir yere iliştirilmiş ekranlar varsa, bu bir sorun olabilir.
Dennis Nolte
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.