web-dev-qa-db-ja.com

現在のユーザーをログアウトするMac OS Xターミナルコマンドとは

「sleep 3600; logout」のようなものを実行したいのですが、logout bashコマンドは現在の端末を閉じるだけです。 Mac OS Xセッション全体を閉じるにはどうすればよいですか?

次のApplescriptは現在のユーザーをログアウトします。

tell application "System Events" to log out

osascriptコマンドを使用して、これをbashエイリアスでラップできます。

alias maclogout="osascript -e 'tell application \"System Events\" to log out'"

「> [ユーザー名] ...からログアウト」と同じで、2分間待機するとログアウトします。

これは、sleepコマンドと簡単に組み合わせることができます。

alias delayedlogout="sleep 3600; maclogout"

..または単一のエイリアスに組み合わせることができます:

alias delayedlogout="sleep 3600; osascript -e 'tell application \"System Events\" to log out'"
22
dbr

OS Xのターミナルから現在のユーザーをログアウトする「素敵な」方法はありません。それを行う「厄介な」方法は、そのユーザーのloginwindowプロセスを強制終了することです。それはあなたのユーザー名で実行されているすべてのプロセス(プログラム)を失礼に殺します。

これを行うには、2つのステップのプロセスがあります。

  1. ターミナルで、これを実行します:

    ps -Ajc | grep loginwindow
    
  2. 次に、実行します

    Sudo kill <pid>
    

    どこ <pid>は、上記のコマンドの出力の最初の数値(2列目)です。

Sudo kill -9を使用して、これを機能させるために私がしなければならなかったプロセスを強制終了します。

したがって、たとえば、最初のコマンドの出力が次の場合、

joshhunt    41     1    41 5e15c08    0 Ss     ??    3:13.09 loginwindow

次に、Sudo kill 41、パスワードを入力すると、ログアウトします。

これはbashエイリアスに組み合わせることができます:

alias messylogout="ps -Ajc | grep loginwindow | grep -v grep | awk '{print \$2}' | Sudo xargs kill"
17
Josh Hunt

これは古い質問であることはわかっていますが、助けになりました。OSX 10.8で必要なコマンドは次のとおりです。

ps -Ajc | grep loginwindow | awk '{print $2}' | Sudo xargs kill -9

awkステートメントは異なり、kill -9ログインプロンプトが表示されることを確認します。

3
mark l

優雅に 2分間待たずにMac OS Xからログアウトする方法の答えを見つけたと思います。

Shift、Option、およびCommandを押しながら「q」を押すと、ログアウトして「ログアウトするかどうか」を尋ねることなく、正常にログアウトすることがわかりました。

だから私はAutomatorを介してAppleScriptをコーディングして次のようにしました:

tell application "System Events"
     keystroke "q" using {command down, shift down, option down}
end tell
2
BITeC

ターミナルに追加する便利なユーティリティはlogoutコマンドで、次のように使用します。

_logout UserName
_

ここに方法:

  1. .bash_profileを編集する

    _nano ~/.bash_profile_

  2. この行を追加します。

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

  3. _ctrl+x_を押してファイルを保存します

  4. ターミナルを再起動します

あなたは行く準備ができています;)

1
Kappe

OS X 10.9の後の「最も良い」方法はlaunchctl gui/$(id -u <username>) bootoutかもしれないと私は主張します

LaunchctlのOS X 10.9以降のドキュメントは_launchctl help_を実行すると見つかりますが、基本的に上記のコマンドはユーザーの一時セッションを破棄します。代替のlaunchctl user/$(id -u <username>) bootoutは、ユーザーがログインしていないときにユーザーデーモンを実行する永続的なセッションを破棄します。

これはlaunchctl gui/$(id -u) bootoutを実行してテストできます。これにより、すぐにログアウトし、システムにログインウィンドウが表示されます(遅延が発生します)。

0
Iain Henderson