只是好奇而已。
说我有人以正常的方式login到他们的Mac – 即。 一个graphicslogin – 系统变得大多没有响应,我需要登出它们。
我可以使用' sudo reboot '或' shutdown '命令轻松地重新启动系统(如果事情locking了,可能需要保证),但是,是否可以通过远程方式简单地将其注销?可以通过Apple Remote Desktop ?
编辑:有没有一个很好的方式来做到这一点,让他们保存文件,甚至可能取消注销?
如果启用了ssh服务器(远程login共享首选项对话框),您将能够从另一台计算机ssh到Mac,并发出任何你想要的命令。
例如:shutdown -r now
编辑:
sudo kill WindowServer
这会将用户注销。
你可以做一些:
killall -u <username>
但是这真的很脏。 或者只是杀死他们的login过程。 这几乎就像你有一个窗口框蓝屏。 他们会失去未经保存的工作等
尽pipe如此,我还是不能想出任何其他办法来更优雅地做到这一点。
任何具有pipe理员权限的用户都可以使用launchctl将其注销,前提是这是一个后10.9系统。
sudo launchctl gui/$(id <username>) bootout将会拆除用户的临时会话并将系统返回到login窗口。
您可以参阅launchctl help以获取更多信息。
请记住,用户的临时域(由gui/501或其他用户ID指定)是由该用户的id定义的,系统不会将用户名映射到用户id (但是id将会)。
这几乎可以工作:
echo 'tell application "System Events" ^ log out ^ keystroke return ^ end tell' | tr '^' '\n' | osascript
如果您不介意等待login窗口计时器倒计时,则更容易:
osascript -e 'tell application "System Events" to log out'
现在,虽然您可以通过这种方式(从SSH会话)注销自己,但您会得到:
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
如果你试图给别人(即使是sudo)。
我不确定杀死用户的login方式,并允许他们取消该操作或保存文件,但Lion下的大多数应用程序都会自动保存。 我一直有一个问题,狮子下的屏幕保护程序挂起(我升级到OSX 10.7.4时开始 – 请参阅https://discussions.apple.com/message/18398072 ),我处理它的方式如下。
SSH进入有问题的Mac(这当然假设你可以做到这一点)和
ps ax | grep [W]indowServer
这会给你WindowServer的进程ID。 然后
sudo kill -HUP *{the PID from the previous command}*
Mac会等待一会儿,然后回到login屏幕。
find他们的WindowServer或login过程:
grep WindowServer
find用户进程的pid
sudo kill -9
这假设你是他们电脑上的pipe理员。
杀死Window服务器将把它的所有subprocess。
如果您可以通过SSH以用户身份login,那么您可以使用:
$ alias maclogout="osascript -e 'tell application \"System Events\" to log out' " $ (sleep 1; maclogout) &
在login窗口出现之前,等待将近两分钟。 在我的testing中,注销对话框会在命令给出后的十或十五秒之后才会出现,然后等待六十秒钟,然后就有注销的时间了。
另一种select是用户bmike 在Apple.StackExchange.com中给出的问题的答案 :
sudo pkill loginwindow