从命令行注销图形用户

从命令行注销图形用户

只是好奇。

假设某人以正常方式(即图形登录)登录了他们的 Mac,然后系统变得几乎没有响应,我需要将他们注销。

sudo reboot我可以使用“ ”或“ ”命令轻松地重新启动系统(如果出现锁定,则可能是有必要的)shutdown,但是,是否可以简单地远程注销它们,就像通过 Apple Remote Desktop 一样?

编辑:有没有一个好的方法可以让他们保存文件或者甚至取消注销?

答案1

如果是 10.9 之后的系统,任何具有管理员权限的用户都可以使用 launchctl 将其注销。

sudo launchctl bootout gui/$(id -u <username>)将拆除用户的临时会话并将系统返回到登录窗口。

您可以查看launchctl help更多信息。

请记住,用户的临时域(由gui/501或其他用户 ID 指定)由该用户的 ID 定义,并且系统不会将用户名映射到用户 ID(但id会)。

答案2

如果您启用 ssh 服务器(共享首选项对话框中的远程登录),您将能够从另一台机器 ssh 到 Mac 并发出您想要的任何命令。

例如:shutdown -r now

编辑:

sudo kill WindowServer

这将使用户退出。

答案3

你可以做以下事情:

killall -u <username>

但这样做真的很卑鄙。或者直接终止他们的登录过程。不过,这就像 Windows 蓝屏一样。他们会丢失所有未保存的工作,等等。

但我真的想不出还有什么其他更优雅的方式来做到这一点。

答案4

这几乎可行:

echo 'tell application "System Events" ^ log out ^ keystroke return ^ end tell' | tr '^' '\n' | osascript

如果您不介意等待登录窗口计时器倒计时,这会更简单:

osascript -e 'tell application "System Events" to log out'

现在,虽然您可以通过这种方式(从 SSH 会话)退出,但您将获得:

_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.

如果您尝试对其他人执行此操作(即使使用 sudo)。

相关内容