“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>
위 명령의 출력에서 첫 번째 숫자 (두 번째 열)는 어디에 있습니까 ?
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"
답변
나는 이것이 오래된 질문이라는 것을 알고 있지만 나에게 도움이되었다 .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
답변
Mac의 GUI에 로그인 한 동일한 사용자로 쉘에 로그인 한 경우 sudo-less 명령을 실행할 수 있습니다. launchctl reboot logout
이 명령 은 사용자를 매우 효과적으로 로그 아웃합니다. 종료하는 동안 상호 작용을 요구하지 않는 응용 프로그램을 허용하지 않아야한다는 경고가 있지만 kill
(SIG TERM) 또는 kill -9
(SIG KILL) 과 같이 앱을 죽이는 것과 동일한 것은 아닙니다 .
답변
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
그러면 즉시 로그 아웃되고 시스템에 로그인 창이 표시됩니다 (지연됨).
답변
터미널에 추가 할 수있는 유용한 유틸리티는 다음 과 같이 사용되는 logout 명령입니다.
logout UserName
방법은 다음과 같습니다.
-
.bash_profile을 편집하십시오.
nano ~/.bash_profile
-
이 줄을 추가하십시오 :
logout() {sudo launchctl bootout user/$(id -u "$1")}
-
눌러 파일을 저장
ctrl+x
-
터미널을 다시 시작
당신은 갈 준비가되어 있습니다;)