it-swarm-ru.tech

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

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

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

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

screen -ls

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

809
Tim

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

Пример

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

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

1161
innaM

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

  1. Введите screen -list, чтобы определить отдельный сеанс экрана.

     ~ $ screen -list 
     Есть экраны: 
     20751.Melvin_Peter_V42 (Отдельно) 
    

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

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

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

479
Melvin Peter

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

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
135
nilloc

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

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

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

 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

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

screen -ls

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

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

43
rc2012
screen -wipe

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

27
Vishv Jeet

добавьте это к своему ~/.bashrc:

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

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

21
user2115803

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

exit

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

21
Nick Desaulniers

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

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

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

15
Rose Perrone
== 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.
7
duggi

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

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

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

5
dat789