Ответ 1
"kill" убьет только одно окно экрана. Чтобы "убить" весь сеанс, используйте quit
.
пример
$ screen -X -S [session # you want to kill] quit
Для неактивных сеансов используйте: $ screen -wipe
Я откуда-то узнал, что отдельный экран может быть убит
screen -X -S [session # you want to kill] kill
откуда можно получить [сеанС#, который вы хотите убить]
screen -ls
Но это не работает. Ничего плохого? Какой правильный путь?
"kill" убьет только одно окно экрана. Чтобы "убить" весь сеанс, используйте quit
.
$ screen -X -S [session # you want to kill] quit
Для неактивных сеансов используйте: $ screen -wipe
Вы можете убить отдельный сеанс, который не отвечает в сеансе экрана, выполнив следующие действия.
Введите 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
Список экранов:
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.
И просто удалите его:
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.
screen -wipe
Необходимо очистить все сеансы мертвых.
Для меня простая
exit
работает. Это происходит из сеанса экрана.
добавьте это в свой ~/.bashrc
:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
Затем используйте cleanscreen
для очистки всего сеанса сеанса.
Чтобы убить все сеансы отдельного экрана, включите эту функцию в свой .bash_profile:
killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
чтобы запустить его, вызовите killd
== 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.
В качестве альтернативы, пока на вашем сеансе экрана все, что вам нужно сделать, это ввести exit
Это убьет сеанс оболочки, инициированный экраном, что фактически прекратит сеанс экрана, в котором вы находитесь.
Не нужно беспокоиться о идентификаторе сеанса сеанса и т.д.