OS X 10.9のコマンドラインからユーザーをログアウトする方法


31

コマンドラインからMac OS Xをログアウトしたい。OS Xバージョンは10.9です。commandを試しましたpkill -KILL -u uidが、このコマンドはうまくいきませんでした。AppleScriptではなく、コマンドラインのみを使用してシステムからユーザーをログアウトするために使用できるコマンドはありますか?


何がうまくいかなかったのですか?
nohillside

コマンドpkill -KILL -u uidを実行すると、システムに灰色の画面が表示され、長時間待機すると、アプリケーションが実行されていない強制終了ウィンドウが表示される
prateeak ojha 14

回答:


32

sudo launchctl bootout gui/$(id -u <username>)
または
sudo launchctl bootout user/$(id -u <username>)

ユーザー名をターゲットユーザーのユーザー名に置き換えるか、サブシェル全体をユーザーのuidに置き換えます。これにより、ユーザーのログインセッションをティアダウンするようにlaunchctlに指示します(guiはユーザーの一時的なログインセッションを具体的に指し、ユーザーはユーザーのバックグラウンドプロセスを指定します)。

sudoこれをテストすることなくログアウトできます。

これはmacOS 10.11.x以降でのみ動作することに注意してください(詳細launchctl helpはこちら)


1
私はあなたの質問を読み直し、これがあなたを助けないことを残念に思うが、それはグーグルの検索結果に現れるだろう。
イアンヘンダーソン

29

ターミナル(またはリモートsshセッション)から純粋にログアウトするには、loginwindowプロセスを強制終了します。

sudo pkill loginwindow

複数のユーザーが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»に伝える」エラーが表示されます:「<」はこれをsfterできません。
prateeak ojha 14

うーん、大丈夫です。コマンドラインの代わりにシェルスクリプトから試すことができますか、シェルはここで奇妙なことをするかもしれません。
nohillside

OPには他の問題があり、通常のコマンドはここのコメントと質問の説明からハングアップしていると思います。
bmike

5
«≠<<
mlainz

2

複数のユーザーがいる場合....

以下を使用してプロセスIDを見つけます。

ps aux|grep login

次に、そのプロセスを強制終了し、そのセッションをログアウトしました。しかし、多くのプロセスが残っています。

pstreeどのプロセスを終了するかを確認してください。


2

これは私のためのトリックを行います。

sudo -s

ルート権限と#プロンプトを取得するには、プロセスを強制終了します。

killall -vu username -HUP

そして、それがすべてなくなっていない場合。ヌケエム!必須の警告-ルートとして物事を殺すと、元に戻すことも「ファイルを保存せずにこのプロセスを中断してもよろしいですか。まれにマシンを起動できなくなる可能性のあるシステムクリティカルデータベースを含みます」警告を入力します。

killall -vu username -9

1
rootシェルにする必要はありません-のkillallコマンドの前にちょうどスティックはsudo
user151019

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でリモートコンピューターにログインしている場合は、「exit」と入力するだけでログアウトできます。

[host:~user]$ exit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.