[apple] 절전 모드에서 스크립트를 실행할 수 있습니까?

OS X Lion을 실행하는 MacBook Pro 2010

절전 및 깨우기 이벤트에서 스크립트를 실행할 수 있습니까?

필자의 특정 응용 프로그램은 MacBook과 iMac 모두에서 정기적으로 사용하는 Dropbox 동기화 Truecrypt 볼륨을 가지고 있다는 것입니다. 뚜껑을 닫는 것이 훨씬 빠르고 쉬우므로 MBP를 거의 종료하지 않지만 MBP를 닫기 전에 Truecrypt 볼륨을 분리하고 다시 동기화해야한다는 것을 의미합니다. 스크립트를 마운트 / 마운트 해제하기에는 충분하지 않지만 한 단계 더 나아가 스크립트가 자동으로 실행되도록하고 싶습니다.



답변

OS가 출시 될 때 슬립 / 웨이크는 스크립트를 트리거 할 수 없지만 타사 솔루션이 개발 된 것으로 보입니다 .

이 프로그램이나 해당 공급 업체에 대한 개인적인 경험이 없습니다.


답변

SleepWatcher 가 사용 중일 수 있습니다.

설명에서 : Mac 또는 Mac의 디스플레이가 잠자기 모드로 전환되거나 깨어날 때, 주어진 시간 후에 사용자 상호 작용없이 또는 사용자가 휴식 후 또는 전원을 껐을 때 활동을 재개 할 때 Unix 명령을 실행하는 데 사용할 수 있습니다 Mac 노트북의 공급 장치가 연결 또는 분리되어 있습니다. 또한 Mac을 잠자기 모드로 보내거나 마지막 사용자 활동 이후의 시간을 검색 할 수 있습니다.

10.6.8에서 잘 작동합니다. 10.7부터 10.7 (!)까지 다양한 버전을 사용할 수 있습니다


답변

이것은 내 자신의 응용 프로그램이므로 고려하십시오. 그러나 ControlPlane은 절전 / 깨우기를 기반으로 작업을 수행 할 수 있습니다. http://www.controlplaneapp.com/ 에서 찾을 수 있습니다 .

ControlPlane은 MarcoPolo의 포크이며 Snow Leopard 및 Lion에서 실행되도록 업데이트되었습니다.


답변

Leopard에서 스크립트에 ‘깨우기’트리거를 제공하기 위해 다음과 같은 간단한 Launch Daemon을 개발했습니다.

<?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>wake-alert</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>z=/tmp/wake; test -s $z || { date > $z; say w; };
tail -1 /Library/Logs/DirectoryService/DirectoryService.server.log | grep -v Sleep || > $z
        </string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Logs/DirectoryService/DirectoryService.server.log</string>
    </array>
    <key>ExitTimeOut</key>
    <integer>2</integer>
    <key>ThrottleInterval</key>
    <integer>1</integer>
</dict>
</plist>

‘say w’를 코드로 바꿀 수 있습니다. 나는 z에 날짜를 쓰지만 이것을 쓰도록 변경할 수 있습니다. 일부 스크립트의 경우 ‘ExitTimeOut’을 늘려야 할 수도 있습니다. 내 런칭 데몬은 /Library/LaunchDaemons/wake-alert.plist에 있습니다.

Launch Daemon은 DirectoryService.server.log를 감시하고 파일이 비어 있으면 임시 파일에 씁니다. 파일은 ‘Sleep’로그 항목과 Shut Down에 의해 지워집니다.

‘빠른 사용자 전환’을 사용하여 잠 자면 로그인 한 사용자가 필요한 스크립트가 너무 빨리 실행을 시도하고 Launch 데몬을 수정하지 않으면 실패합니다 (아마 ‘secure.log’의 grep ‘Succeeded’).


답변

발견하고 시도하고 싶은 또 다른 프로그램은 EventScripts 입니다. 그것이 내가이 목적으로 테스트 한 후, 일반적으로 추천 할 것입니다 매우 인상적인 프로그램은 않습니다하지만 NOT 실제로 충분히 빠르게 Mac이 잠자기 전에 실행하기위한 트리거 스크립트 수 있도록 표시하고, 대신 잠 스크립트는 것 맥이 깨어날 때까지 달리지 마십시오.

나는 당신과 다른 누군가 가이 결론에 도달하기 위해 테스트 한 시간을이 시간을 읽고 저장하기를 바랍니다. 그러나 많은 측면에서이 프로그램은 정말 훌륭하고 강력하고 유연한 프로그램이기 때문에 실패했다고 말하게되어 유감입니다. 또한 매우 저렴합니다 ($ 3). 그러나 저수준 성능은 잠자기 전에 스크립트를 실행 하기 위한 것 같지 않습니다 .

반면에, 내 테스트 (지금까지)에서 수면 감시자 는 상당히 안정적이고 빠르다. 또한 무료입니다. 테스트를 계속하고 작동하지 않는 경우 때때로 답변을 업데이트하고 다른 옵션을 계속 테스트합니다.

UPDATE 나는 한 하지 가 처음 작동하는 나타나 있지만, sleepwatcher 원래이 답변을 작성 이후 지속적으로 신뢰할 수 발견했다. 필자의 경우 임의의 스크립트를 실행할 필요가 없지만 대신 외부 드라이브를 꺼내십시오. Jettison : 지금 까지이 작업을 수행하는 작고 저렴한 앱을 찾았습니다. 이것은 내가 없이는 살 수없는 소수의 유틸리티 중 하나가되었습니다. 당신의 요구가 나의 것과 동일하다면, 나는 그들이 청구하는 몇 달러의 가치가 있다고 생각합니다.


답변

WakeWatcher 는이 문제를 해결하기 위해 만든 간단한 OS X 익명 배경 응용 프로그램입니다. ~/.onwake깨우기가 감지 될 때마다 실행 됩니다. 그런 다음 해당 스크립트에서 드라이브를 마운트 / 마운트하라는 명령을 넣을 수 있습니다.

WakeWatcher는 로그인 항목으로 사용하기에 적합합니다. 매우 정교하지는 않지만 자유롭고 단순합니다.

절전 모드에서 스크립트를 실행하는 것은 간단한 추가 사항이지만 시스템이 실제로 절전 모드로 전환되기 전에 스크립트를 완료하는 데 사용할 수있는 시간이 걱정됩니다. 정말로 필요한 경우 github 프로젝트에 대한 문제를 열고 추가하겠습니다.


답변