Как принудительно убить заблокированный сеанс экрана?

2

У меня есть старый screenсеанс на сервере, который, кажется, защищен паролем. Проблема в том, что я не помню, чтобы на нем был установлен пароль, и я понятия не имею, каким может быть этот пароль. Любое окно терминала, которое могло иметь его, давно исчезло. Как я могу принудительно удалить его?

Черный свет
источник

Ответы:

1

Вы можете убить любые программы, которые вы хотите с помощью killкоманды.
(Ну, не любая. Любая программа, которую вы запустили, или все программы, если вы являетесь пользователем root.)

Используйте, psчтобы увидеть, что вы работаете. Запишите PID (идентификатор процесса) программы, которую вы хотите остановить, затем введите kill -1 12345(где 12345 - это PID процесса, который вы хотите остановить).

Это уничтожение сигнализирует программе с SIGHUP (Losely переведено: другая сторона повесила модем. Пожалуйста, сохраните все данные, которые вы оставили, и грациозно прервать).

Если это не работает, используйте kill -15(прекратите сейчас) или грубите kill -9(ОС: пожалуйста, уберите это с орбиты).

Если вы использовали один из менее изощренных методов, вы, вероятно, захотите потом почистить вручную. Смотрите screen -wipeи screen -list.

Hennes
источник
Я не новичок в Linux - я знаю о процессах сигнализации. :) Я искал более конкретное решение, которое screenкажется более сложным, чем повседневные процессы, которые вы запускаете из оболочки и просто ^Cубиваете. Кроме того, рассматриваемой копией screenявляется setuid root (некоторые есть, и это требуется для многопользовательского режима), поэтому другие могут не просто выполнить killэтот процесс.
Blacklight Shining
1
При всем моем уважении, хотя ваш ответ не был технически полезен, он вдохновил меня попробовать несколько сигналов, и я обнаружил, что отправка фонового SCREENпроцесса a SIGTERM приводит к его корректному завершению. Сокет был удален /var/run/screen/S-blackl, сеанс больше не появлялся screen -ls, и попытки подключиться к нему вернули ошибку отсутствия совпадения сеанса. Когда я использовал это с тестовой сессией, открытой в другом окне, [screen is terminating]появилось обычное и терминал вернулся к обычному приглашению. Это также работало для закрытой сессии.
Blacklight Shining
Я не знал из твоего поста, что ты знал. Я полагаю, что в прошлом я выполнял слишком много частичной адской работы. (По умолчанию для меня предполагается, что пользователь совершенно невежественен). Не здоровое состояние души.
Hennes
Я понимаю ... в подобных ситуациях часто трудно сказать, сколько знает данный пользователь и поймут ли они что-то простое («отправить SCREENпроцесс SIGTERM») или вам придется объяснить это подробнее. :) В любом случае, одно решение это , кажется, SIGTERMИНГ фоновый процесс (тот , который показывает , в psс SCREENзаглавными буквами и аргументы , используемые для создания сеанса). Это работает, однако, только если пользователь владеет процессом (то screenесть не является setuid root) или если он может использовать sudo killили войти в систему как root.
Blacklight Shining
1

Я также столкнулся с этой проблемой, когда я впервые попробовал экран блокировки.

Вы можете решить эту проблему, выполнив:

kill [session # you want to kill] 

или же

 sudo kill [session # you want to kill]

Например:

neal@Master:~$ screen -ls
There is a screen on:
        2782.pts-0.Master       (廿十七年二月八日 十九時廿六分十九秒)   (Detached)
1 Socket in /var/run/screen/S-neal.

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

kill 2782

Надеюсь, что это может решить вашу проблему!

Нил
источник