Как убить и заменить X-сессию через cli

Может кто-нибудь сказать мне, как удалить спящие X сеансов. Этот вопрос аналогичен выходу других пользователей из командной строки, но более конкретным для управления X-дисплеями, которые мне трудно убить.

Я использовал команду «кто -u», чтобы получить сеанс другие экраны:

$ who -u

Который дал мне:

user1   :0           2014-08-18 12:08   ?          2891 (:0)
user1   pts/26       2014-08-18 16:11 17:18        3984 (:0)
user2   :1           2014-08-18 18:21   ?         25745 (:1)
user1   pts/27       2014-08-18 23:10 00:27        3984 (:0)
user1   pts/32       2014-08-18 23:10 10:42        3984 (:0)
user1   pts/46       2014-08-18 23:14 00:04        3984 (:0)
user1   pts/48       2014-08-19 04:10   .          3984 (:0)

kill -9 25745, кажется, ничего не делает.

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

Опять же, этот вопрос касается не только регистрации пользователей. Я надеюсь получить ясность и за убийство / удаление застрявших процессов, которые трудно убить.

1
задан 13 April 2017 в 15:24

1 ответ

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

awk '/\s:1\s/ {system("sudo kill -9 "$6)}' <<< $(who -u)

В вашем случае user2

user2   :1           2014-08-18 18:21   ?         25745 (:1)

Или все сеансы для user2 по имени пользователя

awk '/^user2\s/ {system("sudo kill -9 "$6)}' <<< $(who -u)
0
ответ дан 24 May 2018 в 04:30
  • 1
    С первого взгляда появляется (также по вашему описанию), что это убьет мою сессию и все остальные активные сессии. Если вы прочтете подробности вопроса, то попытайтесь понять, как получить способ убить «бездействующий». X зарегистрированных пользователей. Я бы не хотел убивать сеансы пользователей, которые на самом деле сидят на консоли. Просто конкретные пользователи. – L. D. James 10 June 2015 в 18:41
  • 2
    Команда убивает только один сеанс: user2 :1 2014-08-18 18:21 ? 25745 (:1) – A.B. 10 June 2015 в 18:51
  • 3
    Я вижу сейчас! Он отлично работает. – L. D. James 10 June 2015 в 22:16
  • 4
    =) Дайте мне верх. – A.B. 10 June 2015 в 22:36
  • 5
    Я должен будет проверить это, когда я заставлю пользователя застрять там, где -9 не работает (согласно вопросу). Разрешение, которое работало, состояло в том, чтобы создать цикл, который будет продолжать выдавать команду kill в процессе до тех пор, пока пользователь не будет выкл. Сценарий, который я опубликовал ниже в принятом ответе, повторил до 10 раз, прежде чем пользователь окончательно выйдет из системы. Вы говорите, что ваша строка предоставления продолжит выдачу команды kill несколько раз, если она не умрет в первый раз? Кстати, сценарий в принятом ответе будет работать для других процессов, которые отказываются умирать. – L. D. James 11 June 2015 в 02:18

Другие вопросы по тегам:

Похожие вопросы: