如何通过 CLI 终止和退出 X 会话

如何通过 CLI 终止和退出 X 会话

有人能告诉我如何删除休眠的 X 会话吗?这个问题类似于从命令行注销其他用户,但更具体地说是控制X显示,我发现很难杀死它。

我使用命令“who -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

我注意到 kill 命令并不总是第一次就起作用。有时它也能起作用,但只是响应延迟。

在终止登录会话的情况下,所有进程很可能需要一些时间才能终止或被终止。因此,我编写了一个脚本来检查并跟踪后续终止操作,这些终止操作始终成功注销所需的 X 会话。

#!/bin/bash

results=1   
while [[ $results > 0 ]]
do
    sudo kill -9 25745
    results=$?
    echo -ne "Response:$results..."
    sleep 20
done

答案2

要杀死所有登录的用户,请: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)

相关内容