在OS X 10.9中从命令行注销用户的方法


31

我想从命令行注销Mac OSX。我的OS X版本是10.9。我尝试了command pkill -KILL -u uid,但是这个命令没有奏效。是否存在仅可使用命令行而不是AppleScript从系统注销用户的命令?


到底是什么没有解决?
nohillside

在运行命令pkill -KILL -u uid时,系统显示灰色屏幕,并等待很长一段时间,系统显示没有应用程序运行的强制退出窗口
prateeak ojha 2014年

Answers:


32

sudo launchctl bootout gui/$(id -u <username>)
要么
sudo launchctl bootout user/$(id -u <username>)

用目标用户的用户名替换用户名,或用用户的uid替换整个子shell。这告诉launchctl拆除用户的登录会话(gui特别是指用户的临时登录会话,用户指定用户的后台进程)。

您可以注销自己而不sudo进行测试。

请注意,这仅适用于macOS 10.11.x或更高版本(launchctl help有关详情,请参阅)


1
我只是重新阅读了您的问题,很抱歉,这对您没有帮助,但是它将出现在Google搜索结果中。
伊恩·亨德森

29

要完全从终端(或远程ssh会话)注销,只需终止loginwindow进程即可:

sudo pkill loginwindow

您可能会幻想并指定用户(如果多个用户都有一个登录窗口进程),但这是一个简单的尝试,没有迅速的方式来结束用户的图形会话。


16

过去这对我有用:

注销(带有确认)

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

直接注销(无确认)

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

要么

osascript -e 'tell application "loginwindow" to  «event aevtrlgo»'

这样,任何正在运行的应用程序都将受到注意,并且可以安全方式终止。


osascript -e'告诉应用程序“系统事件”到“事件aevtrlgo»”,显示错误:“ <”不能继续使用。
prateeak ojha 2014年

嗯,对我来说还可以。您能从shell脚本而不是命令行中尝试吗,也许shell在这里做了一些奇怪的事情。
nohillside

我猜想OP还有其他问题,普通的命令已从此处的注释和问题描述中挂断了。
bmike

5
请注意,«≠<<
mlainz

2

如果您有多个用户....

查找具有以下内容的进程ID:

ps aux|grep login

然后终止该进程,然后退出该会话。但是还有很多程序。

检查与,pstree以便您知道哪个进程终止。


2

这对我有用。

sudo -s

要获得一些root特权和#提示符,然后终止进程。

killall -vu username -HUP

如果还没有全部消失。努克!强制性警告-以root身份杀死设备没有撤消操作,也没有“您确定要在不保存文件的情况下中断此过程,包括可能导致计算机在极少数情况下无法启动的系统关键数据库”。键入警告。

killall -vu username -9

1
无需进入root外壳-只需在
skillall

1

添加到您的终端的一个不错的实用程序是“注销”命令,该命令的用法如下:

logout UserName

这里是如何:

  1. 编辑您的.bash_profile

    nano ~/.bash_profile

  2. 添加此行:

    logout() {sudo launchctl bootout user/$(id -u "$1")}

  3. 按保存文件 ctrl+x

  4. 重新启动终端

您准备好了;)


我必须将身体折断换行,然后再将右大括号括起来。
bmauter

@bmauter不适合我,建议的形式可以完美运行。
卡佩

-3

如果您使用ssh登录到远程计算机,则只需输入“退出”即可注销:

[host:~user]$ exit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.