Bagaimana cara memeriksa apakah saya sedang sesi layar?


75

apakah mungkin untuk memeriksa apakah saya sekarang di sesi layar? Saya membutuhkannya untuk menentukan apakah menekan ctrl + d akan memutuskan sambungan saya dari server atau hanya menutup layar saat ini. Terima kasih.

Jawaban:


107

Anda dapat melihat $STYvariabel (variabel yang diatur oleh perintah layar ). Jika bukan "" maka Anda berada di sesi layar.

Saya di layar

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

Saya tidak di layar

$ echo $STY

$

12
Ini menganggap bahwa Anda masih dalam sesi berjalan di komputer lokal. Jika Anda memulai layar dan kemudian SSH di tempat lain, ini tidak akan berhasil.
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
@ Davidvidintack jika Anda SSH akan ke tempat lain, menekan ctrl-D akan "memutuskan sambungan saya dari server", yang persis apa pertanyaannya bertanya tentang.
womble

1
@ aggregate1166877 Saya punya ini jika Anda memposting sebagai alias di setiap mesin yang saya gunakan sekarang.
Eduardo Bezerra

44

Anda dapat melihat variabel $ TERM.

echo $TERM

Jika suatu screensesi, variabel istilah harus mengembalikan "layar".

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (untuk keluar dari layar)

root@deore:/volumes# echo $TERM
xterm

Juga periksa: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen


4
Ini mengandaikan bahwa Anda tidak sengaja mengacaukan nilai TERM Anda karena suatu alasan.
David Mackintosh

1
Jika Anda mengubah variabel TERM saat berada di dalam layar, Anda mengundang semua jenis masalah pada diri Anda sendiri.
womble

Yah, Solaris 2.6 saya tidak cocok dengan nilai TERM yang disetel ke nilai layar.
David Mackintosh

3
"$TERM" = "screen"tampaknya dilestarikan ketika memasuki sudolingkungan, tidak seperti $STYopsi.
Melebius

29

Kecuali Anda telah mengubah binding kunci default, Anda dapat melakukan Ctrl+ a-> Ctrl+ t, yang akan menunjukkan waktu, jika Anda berada di layar. Ini akan bekerja bahkan jika Anda memiliki ssh: d pergi ke tempat lain, tidak seperti saran lainnya.


4
Mengapa kita tidak membenarkan ini.
AndreKR

Ini jelas merupakan solusi terbaik di sini.
Felix Jen

2
@ womble Jika Anda berada dalam program yang tidak dikenal yang dapat melakukan hal-hal destruktif acak sebagai respons terhadap urutan dan perintah utama, maka tidak ada yang aman.
Gurgeh

2
@AndreKR: Tidak berfungsi dalam naskah
Frank Meulenaar

1
Saya tidak upvoting karena di dalam layar, dan menyaring ke layar lain, dan saya benar-benar perlu melihat apakah $ STY bahkan diatur. yang entah mengapa kembali kosong.
Brian Thomas

14

The captionperintah dalam ~/.screenrcmerupakan cara yang baik untuk membedakan sesi layar.

Saya pribadi menggunakan ini:

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

Itu menambahkan garis seperti ini di bagian bawah layar:

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

Dengan bagian pertama (nama sistem + memuat) berwarna hijau dan tanggal berwarna merah muda. Berguna dan sulit untuk dilewatkan!


Ini sempurna! Itu tidak menghalangi (posisi bawah), selalu terlihat (dan berwarna) dan memberikan info berguna tentang sistem. Saya memposting ini di sini juga stackoverflow.com/a/43571028/2450431
hrvoj3e

6

Saya telah menemukan solusi lain:
Ubah .screenrc, jadi sesi layar saya terlihat sangat berbeda dari terminal normal.


Saya rasa saya tahu apa yang Anda sarankan, dan itu bisa dalam beberapa situasi menghindari masalah ini sepenuhnya. Mungkin lebih bermanfaat jika Anda menggambarkan apa yang Anda maksud dengan menunjukkan (misalnya) .screenrcfile contoh .
jvriesem

0
screen -ls

untuk melihat sesi Anda dan

screen -r sessioninfo

untuk menyambung kembali ke yang terputus, jika terlepas.

screen -D -r sessioninfo

untuk menyambung kembali ke yang terputus.


1
Ini tidak menjawab pertanyaan.
womble

-1

Lakukan a screen -ls. Ini akan secara eksplisit menunjukkan Attachedversus Detachedstatus.

Contoh terlampir:

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

Contoh terlepas:

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

6
jika ada layar yang terpasang di tempat lain ini mungkin menjadi masalah.
Dennis Nolte
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.