【问题标题】:Using Launchd with Mavericks and Ruby将 Launchd 与 Mavericks 和 Ruby 一起使用
【发布时间】:2013-10-25 21:24:41
【问题描述】:

升级到 Mavericks,现在 launchd / Lingon 无法启动 Ruby 脚本。我将文件设置为可执行(使用 chmod +x),并将第一行设置为

#!/usr/bin/ruby

但是,我在控制台中不断收到以下错误:

com.apple.launchd.peruser.501[169] (craig.logging[754]): Exited with code: 1

这是一个权限错误,但我不知道要修复或更改哪些权限。该脚本在带有 ruby​​ 的终端中运行良好。

这让我发疯了。

更新:导致问题的 Ruby 脚本将其输出写入另一个文件,例如我的 Dropbox。但是我以具有管理员权限来写入这些文件的身份运行启动文件。不知道出了什么问题...]

更新 2:已经开始使用 Applescript 来启动终端并运行我的脚本,但这非常笨拙和不优雅。其他人对为什么launchd不会运行将其输出写入文件的脚本有任何见解吗?或者是否有人在脚本方面取得了成功?

更新 3:由于编码问题而触发了故障。我必须专门设置 file.open(path/to/file, encoding: 'UTF-8') 才能使脚本正常工作。

谢谢大家。

【问题讨论】:

  • 你试过diskutil repairPermissions /
  • 是的——没有改变错误。
  • 在我的 LaunchDaemon 工作之前,我必须运行 repairPermissions 并重新启动机器
  • 它是否将其输出写入另一个文件?
  • 确实如此。在只有系统级权限的目录中

标签: ruby terminal osx-mavericks


【解决方案1】:

我在 Mavericks 机器上遇到了同样的问题,我设置了几个 Ruby 脚本以不同的时间间隔运行。我发现虽然这台升级了操作系统的机器出现故障,但我的 Mavericks 随附的新 MacBook Pro 可以在launchd 上安排相同的脚本。我最终擦除了机器并从头开始重新安装 Mavericks(以及其他所有内容),然后调度脚本开始工作。

我知道,这不是最微妙的答案,而是为我工作™。

【讨论】:

    【解决方案2】:

    我仍然不完全确定原因,但由于编码问题而触发了权限错误。我必须专门这样做:

    File.open(path/to/file, encoding: 'UTF-8')     
    

    让脚本正常工作。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      相关资源
      最近更新 更多