私は、Mac上のソリューションに対処するための代替方法としてターミナルを使用することにもっと興味を持っています。私はと題し、この質問を見てきました「シャットダウン/再起動のOSXに良い方法はありますか?」。
したがって、私は知りたい:
Terminalコマンドのみを使用してMacをシャットダウン、再起動、スリープする方法は?
私は、Mac上のソリューションに対処するための代替方法としてターミナルを使用することにもっと興味を持っています。私はと題し、この質問を見てきました「シャットダウン/再起動のOSXに良い方法はありますか?」。
したがって、私は知りたい:
Terminalコマンドのみを使用してMacをシャットダウン、再起動、スリープする方法は?
回答:
後のコマンドはshutdownです。これは、マシンがシャットダウンされることをすべてのユーザーに通知し、すべてのアプリにファイルを閉じるなどを指示します。
このコマンドは、パラメーター-h、-r、または-sを使用して、Macをシャットダウン、再起動、またはスリープします。
コマンドはrootとして実行する必要があるため、sudoを使用する必要があります。
たとえば、すぐにマシンを再起動する
sudo shutdown -r now
例:60分でマシンをシャットダウンする
sudo shutdown -h +60
コメントから、対処すべき2つのことがあります
シャットダウンの仕組みは、すべてのプロセスにsigtermを送信することです。たとえば、開いているファイルを保存するなどの処理を行う必要があります。シグナルは通常のキーメッセージキューを介して送信されないため、アプリはこれをメニューの終了から呼び出されるコードに個別に処理する必要があります。良いアプリは両方から共通のコードを呼び出す必要があります。
この他の答えは、メニューオプションを押すかのようにシャットダウンする方法を示しています。ただし、アプリはこのシャットダウンをキャンセルできることに注意してください
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
。次のように、.bash_profileをソースとするファイルでエイリアスを作成しています:alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
確認ダイアログを表示せずにシャットダウンします。
osascript -e 'tell app "System Events" to shut down'
確認ダイアログを表示した後、シャットダウンします。
osascript -e 'tell app "loginwindow" to «event aevtrsdn»'
確認ダイアログを表示せずに再起動します。
osascript -e 'tell app "System Events" to restart'
確認ダイアログを表示した後、再起動します。
osascript -e 'tell app "loginwindow" to «event aevtrrst»'
確認ダイアログを表示せずにログアウトします。
osascript -e 'tell app "System Events" to «event aevtrlgo»'
確認ダイアログを表示してからログアウトします。
osascript -e 'tell app "System Events" to log out'
スリープ状態にします(pmset
):
pmset sleepnow
スリープ状態に移行(AppleScript):
osascript -e 'tell app "System Events" to sleep'
ディスプレイをスリープ状態にする(10.9以降):
pmset displaysleepnow
Appleイベントの4文字のコードはにリストされていAERegistry.h
ます。
上記のすべてのシステムイベントコマンドは、Appleイベントをloginwindow
プロセスに送信します。loginwindow
ログアウト、再起動、シャットダウン、またはMacを通常のスリープ状態にしたときに、上記と同じAppleイベントが送信されます。技術的なQ&A QA1134:プログラムによる再起動、シャットダウン、ログアウトを参照してください。
よるman shutdown
、shutdown -h now
及びshutdown -r now
送信する処理TERM
に続いて信号KILL
信号を出力します。
Daemons and Services Programming Guideによると、loginwindow
ログアウトするように指示すると、突然終了をサポートするプロセスにKILL
信号が送信され、突然終了をサポートしないプロセスはさまざまな方法で終了します。CocoaアプリケーションはapplicationShouldTerminate:
デリゲートメソッド、フォアグラウンドアプリケーションを受け取りますkAEQuitApplication
Appleイベントを受信し、バックグラウンドアプリケーションがkAEQuitApplication
AppleイベントをKILL
受信し、TERM
その後に信号が続き、デーモンKILL
は数秒後に信号に続いて信号を受け取ります。
すぐにシャットダウン:
**sudo shutdown -h now**
シャットダウンに遅延をかけたい場合は、代わりに次のコマンド構文を使用できます。
**sudo shutdown -h +30**
(-hパラメーターはシャットダウンする時間を設定し、システムを停止する(+)30分)
また、端末のコマンドラインプロンプトからログアウトするには、「exit」と入力します。
[host:~user]$ exit
Ctrl-D
にしても、コマンドラインの履歴を散らかさないので、ログアウトすることを好みます。