2016-09-12 5 views
1

OS X 10.11의 Sleepwatcher 2.2가 설치되어 있고 LaunchD를 통해 에이전트로 실행됩니다.OS X 10.11의 Sleepwatcher가 깨우기에서 스크립트를 실행하지 않음

정상적으로 시작되고 활동 모니터에 표시됩니다.

그러나 컴퓨터를 깨울 때 파이썬 스크립트를 실행하고 싶습니다.

내 설치 명령은 다음과 같습니다.

sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/rc.sleep /etc 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/rc.wakeup /etc 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist /Library/LaunchAgents 

chmod +x /etc/rc.sleep 
chmod +x /etc/rc.wakeup 
chmod +x /usr/local/bin/test.py 

내 rc.wakeup 파일은 다음과 같습니다.

#!/bin/sh 
/usr/local/bin/python3 /usr/local/bin/test.py 

다음과 같이 입력하여 터널 창에서 슬립 와치 처를 실행하면 효과가있는 것 같습니다. launchd에 아래 시작 항목으로 실행하려고 할 때

/usr/local/sbin/sleepwatcher --verbose --wakeup /usr/local/bin/test.py 

그러나, 내 파이썬 스크립트를 실행 작동하지 않습니다.

나는 LaunchD에서 시작할 때 왜 작동하지 않는지 알아낼 수 없다.

아무도 이런 유형의 문제에 부딪 혔습니까?

미리 감사드립니다.

+0

예, 저는 chmod + x /etc/rc.sleep와 같은 명령을 사용합니다. 왜 위에 여분의 공간이 있는지 나는 확신하지 못한다. – user1709730

+0

'sleepwatcher' 실행을 시작하고 sleep과 wake가 발생할 때'/ etc/rc.sleep'과'/ etc/rc.wake' 스크립트를 실제로 호출하기 위해 필요한 plist 등록이 누락 된 것처럼 보입니다 이벤트가 발생합니다. – Petesh

+0

Hi Petesh, launchctl로드 대신 /Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist를 사용하여 서버를 재부팅했습니다. 이것은 또한 그것을 받아 들여야한다. wake 이벤트 중에 스크립트가로드되는 동안 또는 실행되는 동안 잠재적으로 오류를 던진 것을 볼 수 있도록 남겨진 로그가 있는지 알고 있습니까? – user1709730

답변

0

비슷한 문제가있어서 Hammerspoon이라는 다른 오픈 소스 도구를 사용하여 다른 접근 방식을 사용했습니다. MacOS에서 수면/깨우기 이벤트를 비롯한 많은 것들을 자동화 할 수 있습니다.

function caffeinateWatcher(eventType) 
    if (eventType == hs.caffeinate.watcher.systemWillSleep or 
      eventType == hs.caffeinate.watcher.systemWillPowerOff) then 
      print ("WillSleep...") 
     -- sleep:start() 
       hs.task.new("/etc/rc.sleep", nil):start() 
    elseif (eventType == hs.caffeinate.watcher.systemDidWake) then 
     print ("Woken...") 
     -- wake:start() 
       hs.task.new("/etc/rc.wake", nil):start() 
    end 
end 

sleepWatcher = hs.caffeinate.watcher.new(caffeinateWatcher) 
sleepWatcher:start() 

참고 :이 Hammerspoon의 ~/.hammerspoon/init.lua에 다음을 추가하여 sleepwatcher의 기능을 복제 (또는 '숟가락'생성) 기계가 깨어 또는 자고 sleepwatcher에서 해당 웨이크 수면 스크립트를 호출 할 때 트리거 스크립트를하는 것은 매우 간단합니다 Hammerspoon에서 쉘 스크립트를 시작하려면 표준 bash 쉘 헤더 #!/bin/bash으로 시작해야합니다.