bir ekranı öldür (ancak tüm ekranları değil)


19

Şu şekilde başlatılan bir Ubuntu sunucusunda çalışan birden çok ekranım var:

screen -dmS screen1 cmd
screen -dmS screen2 cmd
etc...

Ve bir ekranı öldürmem gerekiyor, ama hepsini değil. Belirli bir ekranı adıyla öldürmek için doğru komut nedir? Adam sayfalarını okudum ama aradığım komutu bulamıyorum.

Ayrıca bu komutu bir bash betiğine yazmak istiyorum, böylece normalde yaptığım gibi + screen -r screen1tuşuna basamıyorum.CtrlX


Üzgünüz, bunun bir saniye Donkey Kong ile ilgili olduğunu düşündüm
Chopper3


Bu güzel bir tişört, "Kong Kralı" görmedikçe çoğu insan bunu sen alamayacak: imdb.com/title/tt0923752
BassKozz

Bir cümlenin nesnesi için doğru kelime "siz" dir.
sonraki duyuruya kadar duraklatıldı.

3
Burada "al" dedin ve aşağıda "Teşekkür ederim" dedin. "Sana al" ve "Sana teşekkür et" olmalı.
sonraki duyuruya kadar duraklatıldı.

Yanıtlar:


19

Man sayfasından:

   -X   Send the specified command to a running screen  session.  You  can
        use  the  -d or -r option to tell screen to look only for attached
        or detached screen sessions. Note that this command  doesn't  work
        if the session is password protected.

Yapabilirsin :

        screen -X -S <sessionid> kill

MÜKEMMEL!!! Teşekkürler dolandırıcılık, musta bunu adamda özlemişti.
BassKozz


9

Bir yaparsanız screen -list, her ekran adının, ekranın PID'si olan bir sayı ile başladığını fark edersiniz:

 $ screen -list
There are screens on:
        12281.pts-1.jonah       (12/21/2009 07:53:19 PM)        (Attached)
        10455.pts-1.jonah       (12/19/2009 10:55:25 AM)        (Detached)
2 Sockets in /var/run/screen/S-raphink.

Oradan, bu özel PID'ye bir KILL sinyali gönderin:

$ kill 12281

ve belirli ekranı öldürecek.


Bu işe yaramaz çünkü bunu bir bash komut dosyasından çalıştırıyorum ve PID'yi doğru ekranla eşleşen ekran listesinden çekmek zorunda değilim ... yukarıdaki defraagh'ın cevabı bir cazibe gibi çalıştı. Teşekkürler.
BassKozz

Tamam, defraagh bunun için mükemmel bir çözüme sahipti.
inkaphink

1

defraagh'ın çözümü benim için çalışmıyor, ancak Raphink'in fikrini kullanarak ekran oturumunu öldürebilirim:

ekran listesi işlem kimliğini alır

öldür -9 SÜREÇ

ekran silme SESSIONID


1

Aynı ada sahip birden fazla ekranınız varsa, bunları aynı anda öldürebilirsiniz:

screen -ls  | egrep "^\s*[0-9]+.ScreenName" | awk -F "." '{print $1}' | xargs kill
  • Command, screen -lsekranları işlem numaralarıyla birlikte yazdırır. Örneğin, 4773.test , işlem numarası 4773 ve ad testine sahip bir ekrandır . Örnek çıktı:

    6322.ss      (05/23/2018 10:39:08 AM)        (Detached)
    6305.sc  (05/23/2018 10:38:40 AM)        (Detached)
    6265.ScreenName       (05/23/2018 10:37:59 AM)        (Detached)
    6249.ScreenName  (05/23/2018 10:37:50 AM)        (Detached)
    6236.scc        (05/23/2018 10:37:42 AM)        (Detached)
  • egrepBorulu çizgi ile gönderilen örnek metnin üzerindeki komut filtreleri | .

  • Komut awk -F "." '{print $1}', her satırın ilk sütununu çıkarır. Sütunlar arasındaki sınırlayıcı, -F seçeneği ile nokta (.) Olarak tanımlanır
  • Son olarak komut xargs kill, numaraları | | xargsgirişlerin her birinde bir komut yürütmek istediğimizde kullanılır.

0

İle yeni bir pencere açıyorsunuz

Ctrl A + C

Bir pencereyi

Ctrl + D

veya pencerede çıkış komutu


0

Bununla şu şekilde ilgileniyorum:

process=$(screen -ls | grep screen1)
kill $(echo $process | cut -f1 -d'.')
exit

Açıklama, screen -lsgrep kullanarak çıktısını alıp ilgilendiğiniz ekranı bulup bu dizeyi değişkene atamanızdır process.

Kaynak çıkışı screen -lsher zaman PID ve ardından bir nokta olduğundan, noktadan ve ondan sonraki her şeyden kurtulmak için kesimi kullanabilirsiniz. Yukarıdaki örnekte, bunu parantez içine aldık ve kill komutuna besledik, ancak bir geçici dosyaya yazma ve bunun okunmasını içeren doğrusal olarak yapabilirsiniz.

Ekran adınızın benzersiz olduğundan ve grep'in SADECE öldürmek istediğiniz ekranın adını döndürdüğünden emin olmanız gerekir.

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.