「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'"
OS Xのターミナルから現在のユーザーをログアウトする「素敵な」方法はありません。それを行う「厄介な」方法は、そのユーザーのloginwindow
プロセスを強制終了することです。それはあなたのユーザー名で実行されているすべてのプロセス(プログラム)を失礼に殺します。
これを行うには、2つのステップのプロセスがあります。
ターミナルで、これを実行します:
ps -Ajc | grep loginwindow
次に、実行します
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"
これは古い質問であることはわかっていますが、助けになりました。OSX 10.8で必要なコマンドは次のとおりです。
ps -Ajc | grep loginwindow | awk '{print $2}' | Sudo xargs kill -9
awk
ステートメントは異なり、kill -9
ログインプロンプトが表示されることを確認します。
優雅に 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
ターミナルに追加する便利なユーティリティはlogoutコマンドで、次のように使用します。
_logout UserName
_
ここに方法:
.bash_profileを編集する
_nano ~/.bash_profile
_
この行を追加します。
logout() {Sudo launchctl bootout user/$(id -u "$1")}
_ctrl+x
_を押してファイルを保存します
ターミナルを再起動します
あなたは行く準備ができています;)
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
を実行してテストできます。これにより、すぐにログアウトし、システムにログインウィンドウが表示されます(遅延が発生します)。