Membunuh sesi layar terpisah [tertutup]

864

Saya belajar dari suatu tempat layar terpisah dapat dibunuh oleh

screen -X -S [session # you want to kill] kill

dari mana [sesi # Anda ingin membunuh] dapat diperoleh

screen -ls

Tetapi ini tidak berhasil. Ada yang salah Apa cara yang benar?

Tim
sumber
25
"suatu tempat" tidak selalu merupakan sumber informasi yang baik. Coba "layar pria".
innaM
27
Perintah yang benar adalahscreen -S sessionname -p 0 -X quit
jimmetry
killall - # screen [# = jumlah layar yang ingin Anda bunuh]
CArnold
Saya cukup menggunakan exit
TPArrow
CTRL + D ketika di layar adalah perintah yang paling mudah.
Don King

Jawaban:

1267

"Bunuh" hanya akan membunuh satu jendela layar. Untuk "membunuh" sesi lengkap, gunakan quit.

Contoh

$ screen -X -S [session # you want to kill] quit

Untuk sesi yang mati gunakan: $ screen -wipe

innaM
sumber
112
ketik 'keluar' (tanpa tanda kutip) di ubuntu: P
mzalazar
16
exitberfungsi tetapi perlu diketik di setiap layar yang dibuka. quitbahkan tidak berfungsi
kapad
4
@kapad benar-benar berhenti bekerja jika Anda menulisnya inline -X -S pid / sockname berhenti
Eduard
20
pada OSX masuk screen -X quitpada terminal apa pun mengakhiri semua sesi aktif
Michel
5
Ctrl + D juga berfungsi
Yi Xin
499

Anda dapat membunuh sesi terpisah yang tidak merespons dalam sesi layar dengan melakukan hal berikut.

  1. Ketik screen -listuntuk mengidentifikasi sesi layar terpisah.

    ~ $ layar-daftar  
        Ada layar di:  
             20751.Melvin_Peter_V42 (Terpisah)  
    

    Catatan: 20751.Melvin_Peter_V42adalah id sesi Anda.

  2. Terlampir pada sesi layar terpisah

    layar -r 20751.Melvin_Peter_V42
  3. Setelah terhubung ke sesi, tekan Ctrl+ Alalu ketik:quit

Melvin Peter
sumber
20
Anda cukup menggunakan layar -r 20751 tanpa nama lengkap
Gal Bracha
53
atau: Ctrl + a, k
laffuste
@laffuste 's komentar bekerja untuk saya, tapi quitdan :quitmenyebabkan command not foundpada server Linux jauh saya (mungkin perbedaan antara versi dari OS atau layar yang menyalahkan)
Hack-R
setelah terpasang ke layar, exitjuga berfungsi
PankajKabra
145

Layar daftar:

screen -list

Keluaran:

There is a screen on:
23536.pts-0.wdzee       (10/04/2012 08:40:45 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

Hentikan sesi layar:

screen -S 23536 -X quit
nilloc
sumber
1
'Layar -l' juga berfungsi. ;)
Atul Vaibhav
113

Lebih mudah untuk membunuh sesi, ketika beberapa nama yang bermakna diberikan:

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
Hitman_99
sumber
Kenapa screen -Sdan tidak screen -r?
43Tesseracts
1
Jawaban ini menggunakan nama sesi, yang jauh lebih nyaman daripada mencari ID. Terima kasih!
Paul Kenjora
43

Anda bisa pergi ke tempat sesi layar disimpan dan dijalankan:

 screen -ls

yang mengakibatkan

 There is a screen on:
         26727.pts-0.devxxx      (Attached)
 1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.

Dan hapus saja:

  1. cd / tmp / uscreens / S-xxx
  2. ls
  3. 26727.pts-0.devxxx
  4. rm 26727.pts-0.devxxx
  5. ls

The uscreensdirektori tidak akan memiliki 26727.pts-0.devxxxfile dalam lagi. Sekarang untuk memastikan ketikkan saja ini:

screen -ls

dan Anda harus mendapatkan:

Tidak ada Soket yang ditemukan di / tmp / uscreens / S-xxx.

rc2012
sumber
4
Ini adalah satu-satunya solusi yang akan berfungsi jika layar "macet", yaitu. tidak mati, tetapi tidak bisa dilampirkan.
redreinard
Ini membantu saya ketika layar benar-benar terkunci, tetapi saya perlu menemukan dan membunuh proses yang sebenarnya juga. ps aux | grep screenmenemukan pid dan saya mengeluarkan killuntuk menghapusnya. Tergantung pada apa yang Anda jalankan di layar, Anda mungkin memiliki file temp dan kunci untuk dibersihkan juga.
Lomky
29
screen -wipe

Harus membersihkan semua sesi layar mati .

Wisnu Jeet
sumber
11
Apa artinya mati? tidak menjalankan program apa pun?
Shihao Xu
1
@ShihaoXu Dead berarti sesi tidak dapat dijangkau dan di localhost (koneksi soket rusak). - lihat gnu.org/software/screen/manual/screen.html
iBaff
23

tambahkan ini ke ~/.bashrc:

alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"

Kemudian gunakan cleanscreenuntuk membersihkan semua sesi layar.

pengguna2115803
sumber
11
Satu kalimat sederhana:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel
3
Berhasil, tetapi harus sedikit memodifikasinya untuk bekerja di OSX: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan
Perbaikan sedikit: -layar -l | grep Terlampir | cut -d. -f1 | awk '{print $ 1}' | xargs -I {} screen -d {}
Abhay Yadav
21

Bagi saya yang sederhana

exit

bekerja. Ini dari dalam sesi layar.

Nick Desaulniers
sumber
2
juga, ctrl + a:quit
Nick Desaulniers
2
juga, ctrl + a, lalu K
Nick Desaulniers
Atau hanya CTRL + D dalam satu layar
Frederik Witte
16

Untuk membunuh semua sesi layar terpisah, sertakan fungsi ini di .bash_profile Anda:

killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}

untuk menjalankannya, hubungi killd

Rose Perrone
sumber
5
Terkadang ini bukan 5 digit, jadi saya menggunakan: killd () {untuk sesi dalam $ (layar -l | grep -o '[0-9] \ +') lakukan layar -S "$ {session}" -X berhenti; selesai}
Kostyantyn
7
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls


== SCREEN RESPONDS
There are screens on:
        23487.pts-0.devxxx      (Detached)
        26727.pts-0.devxxx      (Attached)
2 Sockets in /tmp/uscreens/S-xxx.


== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill


== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
        26727.pts-0.devxxx      (Attached)
1 Socket in /tmp/uscreens/S-xxx.
duggi
sumber
Bukankah itu hanya melepas soket, tidak membunuh proses di belakangnya?
Martin C.
Apakah metode ini berisiko dari sudut pandang penciptaan proses zombie?
Fedir RYKHTIK
5

Atau, saat dalam sesi layar Anda yang harus Anda lakukan adalah mengetikkan exit

Ini akan mematikan sesi shell yang diprakarsai oleh layar, yang secara efektif mengakhiri sesi layar tempat Anda berada.

Tidak perlu repot dengan id sesi layar, dll.

dat789
sumber