Mac에서 솔루션을 해결하는 다른 방법으로 터미널을 사용하는 데 더 관심이 있습니다. "OSX를 종료 / 재시작하는 더 좋은 방법이 있습니까?" 라는 제목의 질문을 보았습니다. .
그러므로 알고 싶습니다 :
터미널 명령을 독점적으로 사용하여 Mac을 종료하고 재시동하고 잠자기하는 방법은 무엇입니까?
Mac에서 솔루션을 해결하는 다른 방법으로 터미널을 사용하는 데 더 관심이 있습니다. "OSX를 종료 / 재시작하는 더 좋은 방법이 있습니까?" 라는 제목의 질문을 보았습니다. .
그러므로 알고 싶습니다 :
터미널 명령을 독점적으로 사용하여 Mac을 종료하고 재시동하고 잠자기하는 방법은 무엇입니까?
답변:
다음 명령은 shutdown 입니다. 이것은 모든 사용자에게 머신이 종료 될 것임을 알리고 모든 앱이 파일을 닫도록 지시합니다.
이 명령은 매개 변수 -h, -r 또는 -s를 사용하여 Mac을 종료, 재시동 또는 휴면 상태로 만듭니다.
명령은 root로 실행해야하므로 sudo를 사용해야합니다.
예 : 기계를 즉시 재부팅
sudo shutdown -r now
예 : 60 분 안에 기계를 종료
sudo shutdown -h +60
의견에서 다루어야 할 두 가지가 있습니다
종료가 작동하는 방법은 모든 프로세스에 sigterm을 전송하여 열려있는 파일 저장 등을 처리하는 것입니다. 종료하지 않으면 SIGKILL이 전송되어 응답 할 기회없이 죽게됩니다. 신호는 일반 키 메시지 대기열을 통해 전송되지 않으므로 Apps는 메뉴의 종료에서 호출되는 코드와 별도로 처리해야합니다. 좋은 앱은 둘 다 공통 코드를 호출해야합니다.
이 다른 답변 은 메뉴 옵션을 누르는 것처럼 종료하는 방법을 보여줍니다. 그러나 앱이 종료를 취소 할 수 있습니다.
/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
있습니다.
위의 모든 시스템 이벤트 명령은 loginwindow
프로세스에 Apple 이벤트를 보냅니다 . loginwindow
로그 아웃, 재시동, 종료 또는 Mac을 정상적으로 잠자기 상태로 전환하면 위와 동일한 Apple 이벤트가 전송됩니다. 기술 Q & A QA1134 : 프로그래밍 방식으로 재시작, 종료 및 / 또는 로그 아웃을 유발합니다를 참조하십시오 .
에 따르면 man shutdown
, shutdown -h now
및 shutdown -r now
발송하면 처리 TERM
뒤에 붙는 신호 KILL
신호.
데몬 및 서비스 프로그래밍 안내서 에 따르면 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
명령 줄 기록을 어지럽히 지 않기 때문에 로그 아웃 하는 것을 선호 합니다.