"sleep 3600; logout"과 같은 것을 실행하고 싶지만 logout bash 명령은 현재 터미널 만 닫습니다. 전체 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'"
alias maclogout="..."
현재 사용자를 OS X의 터미널에서 로그 아웃하는 "좋은"방법은 없습니다.이를 수행하는 '지저분한'방법은 해당 사용자의 loginwindow
프로세스를 종료하는 것입니다. 사용자 이름으로 실행중인 모든 프로세스 (프로그램)를 무례하게 죽일 것입니다.
이 작업은 2 단계 프로세스입니다.
터미널에서 다음을 실행하십시오.
ps -Ajc | grep loginwindow
그런 다음 실행
sudo kill <pid>
<pid>
위 명령의 출력에서 첫 번째 숫자 (두 번째 열)는 어디에 있습니까 ?
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"
sudo killall loginwindow
없습니까? 적어도 10.7에서 loginwindow
프로세스가 즉시 다시 열린 것처럼 보입니다.
나는 이것이 오래된 질문이라는 것을 알고 있지만 나에게 도움이되었다 .OS X 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
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
그러면 즉시 로그 아웃되고 시스템에 로그인 창이 표시됩니다 (지연됨).
sudo launchctl bootout gui/XXX
여기서 XXX
수치 사용자 ID (UID)이있다. i) bootout
부속 명령이 먼저오고 ii) $(id)
UID보다 더 많은 것을 리턴합니다.