2012-10-12 5 views
0

가능한 경우 launchd를 사용할 수 없으므로 명시 적으로 아무 것도 찾을 수 없습니다. 그래서, 여기에 질문이 있습니다 ...발사기를 통한 Watir 스크립트

시간당 10 분, 매시간 Watir 스크립트를 실행하고 싶습니다. 이 스크립트는 Firefox를 실행하고 테스트를 수행하며 결과를 표준 출력에 기록합니다. 이 같은 I 설정 내 PLIST 파일 : 내가 가지고있는 그 쉘 스크립트 내부

<?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>client_checkout</string> 
    <key>Program</key> 
    <string>/Users/chris/svn/qa/watir/tests/client.sh</string> 
    <key>StartCalendarInterval</key> 
    <dict> 
     <key>Minute</key> 
     <integer>52</integer> 
    </dict> 
</dict> 
</plist> 

:

echo 'hello' >> /Users/chris/results.txt 
ruby /Users/chris/svn/qa/watir/tests/client_checkout.rb 

에코 디버그 목적이있다.

/Library/LaunchDaemons에 plist 파일을 배치하면 스크립트가 실행되고 'Hello'가 텍스트 파일에 기록 된 것을 볼 수 있습니다. 그런 다음 Ruby 파트에 충돌하면 실패합니다. 내가 SYSTEM.LOG 볼 때 나는 참조 :

com.apple.launchd.peruser.502[118] (client_checkout[25285]): Exited with code: 1 

나는/라이브러리/LaunchAgents을 통해 PLIST 파일을 전환하려하지만 똑같은 결과입니다.

또한 파일 경로 문제라고 생각하지 않습니다. 내가 여기서하는 것처럼 전체 파일 경로를 제공하면이 스크립트는 모든 디렉토리에서 올바르게 실행됩니다.

이런 식으로 launchd를 사용할 수 없습니까? 내가 "잘못하고 있니?" 무슨 일이야? 고맙습니다!

답변

1

거기서 문제가 될 수있는 두 가지 점을 생각해 볼 수 있습니다. 환경이 제대로 설정되지 않을 수 있습니다. sh (또는 bash)에서 실행하려고 시도하고 $ PATH와 같은 항목이 예상대로 구성되어 있는지 확인하십시오. 문제/OA 기기의 GUI 환경 승 파이어 폭스를 실행하는 것입니다 원인이 될 수

env > /Users/chris/Desktop/launchdenv.txt 

다른 것은 : 당신이 환경을 확인하려면

<?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>client_checkout</string> 

    <key>ProgramArguments</key> 
    <array> 
     <string>/bin/sh</string> <!-- New bit here --> 
     <string>/Users/chris/svn/qa/watir/tests/client.sh</string> 
    </array> 

    <key>StartCalendarInterval</key> 
    <dict> 
     <key>Minute</key> 
     <integer>52</integer> 
    </dict> 
</dict> 
</plist> 

는이 같은 것으로 스크립트를 변경할 수 있습니다 . launchd 스크립트를 ~/Library/LaunchAgents/으로 옮기는 것이 더 나을 것입니다.

+0

감사 : 같은 문제를 가진 다른 사람을 위해, 당신은 RVM에서 필요한 코드는 특히 https://rvm.io/workflow/scripting/

@ 찾을 수 있습니다, 쉘 스크립트의 시작이 추가 바른 길! –

0

/Users/chris/.rvm에있는 내 보석을 찾을 수 없어 실패했습니다./usr /. RVM 웹 사이트에서 내 스크립트에 추가해야하는 것을 찾았습니다. 이제 실행 중입니다! 당신의 대답은 정말 나를 지적,

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 

    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 

elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 

    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 

else 

    printf "ERROR: An RVM installation was not found.\n" 

fi