로그 아웃시 스크립트 / 앱 실행


13

우리는 모두 Mac OS X에 로그인 할 때 실행할 앱 / 스크립트를 설정할 수 있는 매우 유용한 로그인 항목 기능이 있다는 것을 알고 있습니다.

로그 아웃 할 때 실행되는 스크립트 / 앱 목록을 설정하는 방법을 찾고 있습니다. "로그 아웃 항목"목록.
기본적으로 로그 아웃하거나 종료 할 때 자동으로 실행되는 약간의 정리 스크립트를 작성하고 싶습니다.

따라서 로그 아웃 할 때 스크립트 (또는 이상적으로는 목록)가 자동으로 트리거되는 방법을 찾고 있습니다. 로그 아웃은 스크립트가 완료 될 때까지 기다립니다 (앱에서 요청하면 저장을 클릭 할 때까지 로그 아웃하는 방식과 동일).

Mac OS X에서 로그 아웃 할 때 자동으로 (a) 스크립트를 트리거하는 방법이 있습니까?


답변:


7

로그 아웃 후크는 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>

흠, 그 중 어느 것도 나를 위해 일하지 않았습니다. 내가있어 이 스크립트 내가 그것을 실행하면 작동 sh합니다 (그 .txt 인 파일을 만듭니다). 스크립트를 /etc/rc.shutdown.local로 저장하고 defaults말한대로 추가했습니다 . 두 파일 모두 이미 존재하지 않았습니다. 내가 뭔가 잘못하고 있습니까? 감사!
Nathan Greenstein

내가 잘못하고 있는지 잘 모르겠습니다. 10.6.8에 있는데 LogoutHook이 작동하지 않습니다. 이 스크린 샷을 보고 문제가 있는지 알려 주시면 감사하겠습니다 . 감사!
Nathan Greenstein

1
아! 마지막 하나는 10.6.8의 트릭을 수행했습니다. 감사! 한 가지 참고 사항 : 그것은 사자와 함께 작동하지 않습니다 :(
Nathan Greenstein

2
두 가지 방법 모두 종료하거나 재부팅 할 때에도 Mountain Lion (10.8.2) 시스템에서 제대로 작동합니다. LoginHook / LogoutHook 후크는 루트 사용자 의 컨텍스트에서 실행 되며 단일 시스템 전체 후크이며 로그인 후크는 사용자 별 시작 에이전트보다 훨씬 일찍 동 기적으로 실행됩니다 . 마찬가지로, 로그 아웃 후크는 EXIT-trap 메소드를 사용하는 사용자 별 시작 에이전트보다 먼저 실행됩니다. 후크 작동하는 경우가 있습니다. 예를 들어, Mac의 시작 사운드를 억제하기 위해 종료시 사운드를 음소거하려는 경우 LogoutHook 만 안정적으로 작동합니다.
mklement0

1

실제로 방법이 있습니다.

  1. "스크립트 편집기"앱을 엽니 다

do shell script "PUT YOUR START SCRIPT PATH HERE"

on quit
    do shell script "PUT YOUR STOP SCRIPT PATH HERE"
    continue quit
end quit
  1. 파일> 저장, 응용 프로그램 선택 및 핸들러 실행 및 저장 후 열린 상태 유지
  2. 시스템 환경 설정> 사용자 및 그룹> 로그인 항목 탭> + 버튼
  3. 응용 프로그램을 추가하고 숨김으로 표시

Dock에서 숨기려면

  1. 애플리케이션을 마우스 오른쪽 단추로 클릭하고 패키지 컨텐츠 표시를 선택하십시오.
  2. Info.plist를 열고 추가하십시오

<key>NSUIElement</key>
<string>1</string>

이거 너무 좋아. 내 필요에 단순하고 적절합니다. 그리고 더 이상 사용되지 않습니다.
Ivan X

0

이를 위해 스크립트 타이머 가 적합합니다. 로그 아웃, 로그인 등에서 실행할 수 있습니다. 간단하고 사용하기 쉬운 솔루션을 위해 이것과 함께 갈 것입니다. 간단한 GUI가 있습니다.

트리거 된 동작

스크립트 타이머에 대해 두 가지주의 할 사항이 있습니다. 하나는 무료 가 아닙니다 . 12 달러가 들지만 개인적으로는 그만한 가치가 있다고 생각합니다. 둘째, Lion과 완벽하게 호환되지는 않지만 호환 되 자마자 무료 업데이트를 약속했습니다.


1
이것은 더 이상 사용되지 않습니다
Kirtikumar A.

0

Platypus 와 같은 것을 사용하여 스크립트에서 Mac 응용 프로그램을 만든 다음 다른 응용 프로그램과 마찬가지로 로그인 항목에 추가 할 수도 있습니다.


0

Power Manager 는 사용자가 로그 아웃 할 때 스크립트를 실행할 수 있습니다. 이것은 상용 제품이며 최신 macOS를 지원합니다.

Power Manager가 로그 아웃 스케줄 도우미 태스크에서 스크립트를 실행합니다.

이벤트 편집기를 사용하는 이전 버전이 필요 했지만 이제 로그인 및 로그 아웃시 스크립트 실행을위한 스케줄 지원 태스크가 포함되었습니다.

Power Manager를 작성 했으므로 구현에 대한 기술적 인 질문을 자유롭게하십시오. 트리거 된 이벤트 로그 아웃의 경우 Power Manager는 사용자 상태 변경을 폴링하지 않고 macOS에 의해 사용자 변경 사항을 통지합니다. 이 방법은 스크립트 루핑 / 폴링보다 효율적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.