로그 아웃 후크는 10.4 에서 더 이상 사용되지 않지만 10.9부터 작동합니다.
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\nsay a' > ~/.logouthook
chmod +x ~/.logouthook
LogoutHook 키의 값은 셸 명령이 아닌 실행 파일의 경로 일 수 있습니다. 로그 아웃 후크는 루트로 실행됩니다.
기본 명령은 /var/root/Library/Preferences/com.apple.loginwindow.plist를 수정합니다. /Library/Preferences/com.apple.loginwindow.plist에 LogoutHook 키를 추가해도 작동하지 않습니다.
로그 아웃 후크를 실행하는 데 시간이 오래 걸리면 로그 아웃 후크가 종료 될 때까지 회색 화면이 표시됩니다. 로그 아웃 후크가 강제 종료 된 후 시간 제한이없는 것 같습니다.
나는 발사 된 프로그램을 안정적으로 로그 아웃 할 수있는 방법을 찾지 못했습니다. EXIT와 같은 신호 트래핑을 시도 할 때 트랩의 코드는 로그인 창에 로그 아웃 할 때만 실행되었으며 종료하거나 다시 시작할 때는 실행되지 않았습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>test</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>trap 'echo a>/Users/username/Desktop/a;say a' EXIT;while :;do sleep 10;done</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>