Убить сеанс отсоединенного экрана [закрыто]


Я узнал где-то отдельный экран может быть убит

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

где [сеанс # вы хотите убить] можно получить от

экран -общ. .

но это не сработает. Ничего плохого? Каков правильный путь?

11 703

11 ответов:

"убить" убьет только одно окно экрана. Чтобы "убить" весь сеанс, используйте quit.

пример

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

вы можете убить отсоединенный сеанс, который не отвечает в сеансе экрана, выполнив следующие действия.

  1. тип screen -list для идентификации отдельной экранной сессии.

    ~$ screen -list  
        There are screens on:  
             20751.Melvin_Peter_V42  (Detached)  
    

    Примечание: 20751.Melvin_Peter_V42 - это идентификатор сессии.

  2. прикрепитесь к сеансу отсоединенного экрана

    screen -r 20751.Melvin_Peter_V42
  3. после подключения к сеансу нажмите Ctrl + A введите :quit

список экранов:

screen -list

выход:

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.

убить сеанс экрана:

screen -S 23536 -X quit

легче убить сеанс, когда дано какое-то осмысленное имя:

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

вы можете просто перейти к месту, где находится сеанс экрана и запустить:

 screen -ls

что приводит к

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

и просто удалите его:

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

The не будет в нем больше. Теперь, чтобы убедиться, просто введите это:

screen -ls

и вы должны сделать:

сокеты не найдены в /tmp/uscreens / S-xxx.

screen -wipe

должны очистить все умерла сеансы экране.

для меня простой

exit

строительство. Это из сеанса экрана.

добавьте это в ваш ~/.bashrc:

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

затем использовать cleanscreen для очистки всех сеансов экрана.

убивать все отсоединенные сеансы экрана, включите эту функцию в свой .файл:

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

, чтобы запустить его, называем killd

== 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.

в качестве альтернативы, в то время как в вашей сессии экрана все, что вам нужно сделать, это ввести выход

Это убьет сеанс оболочки, инициированный экраном, который эффективно завершает сеанс экрана, на котором вы находитесь.

Не нужно беспокоиться о идентификаторе сеанса экрана и т. д.