首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过launchd的Watir脚本

通过launchd的Watir脚本
EN

Stack Overflow用户
提问于 2012-10-12 09:48:42
回答 2查看 497关注 0票数 0

有可能我不能使用launchd来做这件事,我只是找不到任何明确说不的东西。所以,这是个问题...

我希望每小时过10分钟运行我的Watir脚本。此脚本启动Firefox,执行测试,并将结果记录到标准输出。我这样设置我的plist文件:

代码语言:javascript
复制
<?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>

在我拥有的shell脚本中:

代码语言:javascript
复制
echo 'hello' >> /Users/chris/results.txt
ruby /Users/chris/svn/qa/watir/tests/client_checkout.rb

回声是为了调试目的而存在的。

当我将plist文件放在/Library/LaunchDaemons中时,脚本运行,我看到'Hello‘写到了文本文件中。然后,当它命中Ruby部分时,它将失败。当我查看system.log时,我看到:

代码语言:javascript
复制
com.apple.launchd.peruser.502[118] (client_checkout[25285]): Exited with code: 1

我尝试将plist文件切换到/Library/LaunchAgents,但结果完全相同。

另外,我不认为这是文件路径问题。当我提供完整的文件路径时,就像我在这里所做的那样,这些脚本可以从任何目录运行。

我不能这样使用launchd吗?我是不是“做错了”?到底怎么回事?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-12 11:40:04

我可以想到两件事,这可能是问题所在。环境可能未正确设置。我会尝试从sh (或bash)运行它,也许还会检查以确保像您的$PATH这样的东西是按照您期望的方式配置的。

代码语言:javascript
复制
<?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>

如果您想要检查环境,您可以将脚本更改为如下所示:

代码语言:javascript
复制
env > /Users/chris/Desktop/launchdenv.txt

另一件可能导致问题的事情是在没有gui环境的情况下运行firefox。您可能会更幸运地将您的启动脚本转移到~/Library/LaunchAgents/

票数 1
EN

Stack Overflow用户

发布于 2012-10-13 02:08:20

它失败是因为它找不到我的Gems,它在/Users/chris/.rvm中,而不是/usr/中。在RVM网站上找到了我需要添加到我的脚本中的内容,现在我正在运行!对于其他有同样问题的人,可以在@ https://rvm.io/workflow/scripting/中找到您需要的RVM代码

具体地说,将以下代码添加到shell脚本的开头:

代码语言:javascript
复制
    # 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12851133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档