只是好奇。
假设某人以正常方式(即图形登录)登录了他们的 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)。