pengembangan-web-mp-pd.com

Bagaimana cara mendaftar sesi layar berjalan?

Saya memiliki banyak server, tempat saya menjalankan eksperimen menggunakan screen. Prosedurnya adalah sebagai berikut:

  1. ssh ke server XXX
  2. luncurkan screen
  3. mulailah eksperimen dalam beberapa tab
  4. lepaskan screen
  5. putuskan sambungan dari server

Sementara percobaan sedang berjalan, saya dapat dengan mudah menemukan di server mana mereka berada dengan sshing ke semua server dan daftar proses saya yang sedang berjalan (menggunakan top atau ps).

Namun, setelah percobaan selesai, bagaimana saya bisa menemukan di server mana saya memiliki sesi layar dibuka (sehingga saya dapat melihat output, meluncurkan kembali, dll)?

PS: Eksperimen saya juga mencetak output mereka ke file ... tapi ini bukan inti dari pertanyaan saya.

203
Wookai

Untuk daftar semua sesi layar untuk pengguna, jalankan perintah berikut sebagai pengguna itu:

screen -ls

Untuk melihat semua sesi layar pada mesin tertentu yang dapat Anda lakukan:

ls -laR /var/run/screen/

Saya mendapatkan ini di mesin saya:

gentle ~ # ls -laR /var/run/screen/

/var/run/screen/:
total 1
drwxrwxr-x  4 root utmp   96 Mar  1  2005 .
drwxr-xr-x 10 root root  840 Feb  1 03:10 ..
drwx------  2 josh users  88 Jan 13 11:33 S-josh
drwx------  2 root root   48 Feb 11 10:50 S-root

/var/run/screen/S-josh:
total 0
drwx------ 2 josh users 88 Jan 13 11:33 .
drwxrwxr-x 4 root utmp  96 Mar  1  2005 ..
prwx------ 1 josh users  0 Feb 11 10:41 12931.pts-0.gentle

/var/run/screen/S-root:
total 0
drwx------ 2 root root 48 Feb 11 10:50 .
drwxrwxr-x 4 root utmp 96 Mar  1  2005 ..

Ini adalah penggunaan Unixy Socket yang agak cemerlang yang dibungkus dengan izin sistem berkas untuk menangani keamanan, keadaan, dan aliran.

378
joshperry

Perintah layar -list mungkin yang Anda inginkan.

Lihat man

19
Zoredache

Sementara jawaban joshperry benar, saya merasa sangat menjengkelkan karena tidak memberi tahu Anda nama layar (yang Anda tetapkan dengan opsi -t), itu sebenarnya yang Anda gunakan untuk mengidentifikasi sesi. (Bukan salahnya, tentu saja, itu cacat layar)

Itu sebabnya saya malah menggunakan skrip seperti ini: ps auxw|grep -i screen|grep -v grep

13
o0'.

Saya tidak begitu yakin dengan pertanyaan Anda, tetapi jika yang Anda inginkan adalah daftar sesi layar yang sedang dibuka, coba:

screen -ls
6
skinp
 For windows system

 Open PuTTY 
 then login in server

Jika Anda ingin melihat layar di Konsol maka Anda harus menulis perintah

 Screen -ls

jika Anda harus mengakses layar maka Anda harus menggunakan perintah di bawah ini

 screen -x screen id

Tulis PWD di baris perintah untuk memeriksa di folder mana Anda saat ini

6
Ankit jain

Dalam kebanyakan kasus _ screen -RRx $username/ akan mencukupi :)

Jika Anda masih ingin membuat daftar semua layar maka letakkan skrip berikut di jalur Anda dan sebut layar itu atau apa pun yang Anda suka:

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "[email protected]"
else
    shopt -s nullglob
    screens=(/var/run/screen/S-*/*)
    if (( ${#screens[@]} == 0 )); then
        echo "no screen session found in /var/run/screen"
    else
        echo "${screens[@]#*S-}"
    fi
fi

Ini akan berperilaku persis seperti layar kecuali untuk menampilkan semua sesi layar, ketika memberikan opsi -l-all sebagai parameter pertama.

3
ObiWahn

Banyak orang sudah menunjukkan itu

$ screen -ls

akan daftar sesi layar.

Berikut ini trik lain yang mungkin berguna bagi Anda.

Jika Anda menambahkan perintah berikut sebagai baris terakhir di file . Bashrc Anda di server xxx, maka itu akan secara otomatis menyambung kembali ke sesi layar Anda saat login.

screen -d -r

Semoga bermanfaat.

3
samurai

ps x | ambil LAYAR

untuk melihat layar apa yang berjalan jika Anda menggunakan perintah

layar -A -m -d php make_something.php

0
theworlddecoded