Müstakil ekran oturumunu öldür [kapalı]


864

Bir yerden bağımsız bir ekranın öldürülebileceğini öğrendim

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

[öldürmek istediğiniz oturum #] nereden alınabilir

screen -ls

Ama bu işe yaramıyor. Herşey yanlış? Doğru yol nedir?


25
"bir yerlerde" her zaman iyi bir bilgi kaynağı değildir. "Man screen" i deneyin.
innaM

27
Doğru komutscreen -S sessionname -p 0 -X quit
jimmetry

killall - # ekran [# = öldürmek istediğiniz ekran sayısı]
CArnold

Ben sadece çıkış kullanıyorum
TPArrow

Ekranda iken CTRL + D en kolay komuttur.
Don King

Yanıtlar:


1267

"kill" yalnızca bir ekran penceresini öldürür. Tüm oturumu "öldürmek" için kullanın quit.

Misal

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

Ölü oturumlar için: $ screen -wipe


112

16
exitçalışır, ancak açılan her ekrana yazılması gerekir. quitbile çalışmıyor
kapad

4
@kapad aslında satır içi yazarsanız çalışır - X -S pid / sockname quit
Eduard

20
screen -X quitherhangi bir terminale giren OSX'de tüm aktif oturumlar sona erer
Michel

5
Ctrl + D de çalışıyor
Yi Xin

499

Aşağıdakileri yaparak ekran oturumunda yanıt vermeyen ayrılmış bir oturumu öldürebilirsiniz.

  1. Tip screen -listmüstakil ekran oturumu tanımlamak için.

    ~ $ ekran listesi  
        Ekranlar var:  
             20751.Melvin_Peter_V42 (Müstakil)  
    

    Not: 20751.Melvin_Peter_V42oturum kimliğinizdir.

  2. Ayrılmış ekran oturumuna bağlanın

    ekran -r 20751.Melvin_Peter_V42
  3. Oturuma bağlandıktan sonra Ctrl+ tuşuna basın ve Aardından:quit


20
sadece ekran -r 20751 tam adı olmadan kullanabilirsiniz
Gal Bracha

53
veya: Ctrl + a, k
laffuste

'yorumunu benim için çalıştı @laffuste ancak quitve :quityol command not foundbenim uzak Linux sunucu üzerinde (OS veya ekranın sürümleri arasındaki farklar belki suçlu vardır)
Hack-R

bir kez ekrana bağlı, exitayrıca çalışır
PankajKabra

145

Liste ekranları:

screen -list

Çıktı:

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.

Ekran oturumunu sonlandır:

screen -S 23536 -X quit

1
'screen -ls' de çalışır. ;)
Atul Vaibhav

113

Anlamlı bir ad verildiğinde bir oturumu öldürmek daha kolaydır:

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit

Neden screen -Solmasın screen -r?
43Tesseracts

1
Bu cevap oturumun adını kullanır ve bu kimlik numarasını aramaktan çok daha uygundur. Teşekkür ederim!
Paul Kenjora

43

Ekran oturumunun bulunduğu yere gidip çalıştırabilirsiniz:

 screen -ls

sonuçlanan

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

Ve sadece kaldırın:

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

uscreensDizin olmaz 26727.pts-0.devxxxartık bu dosyayı. Şimdi şunu yazdığınızdan emin olmak için:

screen -ls

ve şunları elde etmelisiniz:

/ Tmp / uscreens / S-xxx içinde Soket bulunamadı.


4
Bu, eğer ekran "sıkışmış" ise, yani çalışacak tek çözümdür. ölü değil ama eklenemez.
redreinard

Bu, ekran tamamen kilitlendiğinde bana yardımcı oldu, ancak gerçek işlemi de bulmam ve öldürmem gerekiyordu. ps aux | grep screenpid bulundu ve ben killkaldırmak için bir yayınladı . Ekranınızda ne çalıştırdığınıza bağlı olarak, temizlemek için geçici dosyalarınız ve kilitleriniz de olabilir.
Lomky


23

bunu şuna ekle ~/.bashrc:

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

Sonra cleanscreentüm ekran oturumunu temizlemek için tuşunu kullanın .


11
Basit bir astar:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel

3
Bir tedavi çalıştı, ancak OSX üzerinde çalışmak için biraz değiştirmek zorunda kaldı: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

Hafif gelişme: -ekran -ls | grep Ekli | kes -d. -f1 | awk '{print $ 1}' | xargs -I {} ekran -d {}
Abhay Yadav


16

Tüm ayrılmış ekran oturumlarını öldürmek için bu işlevi .bash_profile dosyanıza ekleyin:

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

çalıştırmak için ara killd


5
Bazen 5 basamak değildir, bu yüzden şunu kullanırım: killd () {$ (screen -ls | grep -o '[0-9] \ +') oturumu için -S "$ {session}" -X quit; done}
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.

Bu sadece soketi çıkarmakla kalmaz, arkasındaki süreci öldürmez mi?
Martin C.

Bu yöntem zombi süreçlerinin oluşturulması açısından riskli midir?
Fedir RYKHTIK

5

Alternatif olarak, ekran oturumunuzda tek yapmanız gereken exit yazın

Bu, ekran tarafından başlatılan kabuk oturumunu öldürecek ve bulunduğunuz ekran oturumunu etkili bir şekilde sonlandıracaktır.

Ekran oturum kimliği vb. İle uğraşmanıza gerek yok.

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.