Убить сеанс отдельного экрана

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

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

откуда можно получить [сеанС#, который вы хотите убить]

screen -ls

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

Ответ 1

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

пример

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

Для неактивных сеансов используйте: $ screen -wipe

Ответ 2

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

  • Введите screen -list, чтобы идентифицировать сеанс отдельного экрана.

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

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

  • Присоединитесь к сеансу отдельного экрана

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

Ответ 3

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

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

Ответ 4

Легче убить сеанс, когда дано какое-то значащее имя:

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

Ответ 5

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

 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.

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

  • cd /tmp/uscreens/S-xxx
  • ls
  • 26727.pts-0.devxxx
  • rm 26727.pts-0.devxxx
  • ls

В каталоге uscreens больше нет файла 26727.pts-0.devxxx. Теперь, чтобы убедиться, что просто введите это:

screen -ls

и вы должны получить:

Нет сокетов в /tmp/uscreens/S -xxx.

Ответ 6

screen -wipe

Необходимо очистить все сеансы мертвых.

Ответ 7

Для меня простая

exit

работает. Это происходит из сеанса экрана.

Ответ 8

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

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

Затем используйте cleanscreen для очистки всего сеанса сеанса.

Ответ 9

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

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

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

Ответ 10

== ISSUE THIS COMMAND
[[email protected] ~]$ 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
[[email protected] ~]$ screen -X -S 23487.pts-0.devxxx kill


== WANT PROOF?
[[email protected] ~]$ screen -ls
There is a screen on:
        26727.pts-0.devxxx      (Attached)
1 Socket in /tmp/uscreens/S-xxx.

Ответ 11

В качестве альтернативы, пока на вашем сеансе экрана все, что вам нужно сделать, это ввести exit

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

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