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?


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


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


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

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

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.


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


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.


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


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


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.

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.

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.