“hello world”launchd plist 不起作用

2023-12-05

我在 ~/Library/LaunchAgents 有以下 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>com.yogapo.test_launchd</string>

    <key>Program</key>
    <string>. /Users/luke/dev/data_yogapo/script/test_launchd.sh</string>

    <key>StartInterval</key>
    <integer>10</integer>

    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

test_launchd.sh 文件包含以下内容:

#! /bin/bash 

echo "hello world from test_launchd.sh" >> /Users/luke/dev/data_yogapo/log/development.log

当我手动运行 test_launchd.sh 时
. /Users/luke/dev/data_yogapo/script/test_launchd.sh结果如预期:该行出现在末尾development.log

但是当我加载这个 plist 文件时,什么也没有发生:

$ cd ~/Library/LaunchAgents
$ launchctl load com.yogapo.test_launchd.plist
$ launchctl list | grep yogapo
  -       1       com.yogapo.test_launchd

我已经尝试过使用和不使用 RunAtLoad 键。我在 SO 以及互联网上的其他地方查看了其他答案。我已经按照教程进行操作了,但什么也没发生。非常感谢任何帮助 - 谢谢!


你在问launchd运行名为

". /Users/luke/dev/data_yogapo/script/test_launchd.sh"

它将占用整个值Programkey 作为第一个参数execvp(see 人 execvp(3)更多细节)

如果您要检查system日志,你会看到类似以下内容:

5 月 22 日 21:17:38 凹陷 com.apple.launchd.peruser.501[202] (com.yogapo.test_launchd[32986]): posix_spawn(". /Users/luke/dev/data_yogapo/script/test_launchd.sh", ...):没有这样的 文件或目录 5 月 22 日 21:17:38 凹陷 com.apple.launchd.peruser.501[202](com.yogapo.test_launchd[32986]): 退出,退出代码:1

launchd不是一个外壳。但是,它可以解释 hash-bang 字符序列来识别使用哪个程序来解释脚本。因此,只需将您的脚本指定为要运行的程序:

<key>Program</key>
<string>/Users/luke/dev/data_yogapo/script/test_launchd.sh</string>

Note:如果您需要将参数传递给脚本,请使用ProgramArguments键并将整个命令行放在那里。例如:

<key>ProgramArguments</key>
<string>/Users/luke/dev/data_yogapo/script/test_launchd.sh arg1 arg2 arg3</string>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“hello world”launchd plist 不起作用 的相关文章

  • iOS 10.0 运行时崩溃中的 NSCameraUsageDescription?

    Using iOS 10 0最后一个测试版 我曾尝试在我的应用程序中使用相机扫描条形码 但由于此运行时错误而崩溃 此应用程序已崩溃 因为它尝试访问隐私敏感信息 没有使用说明的数据 应用程序的 Info plist 必须包含 一个 NSCam
  • 使用 NSDictionary 对象写入 plist 文件

    抱歉 我看到了类似的问题 但他们似乎没有给我一些完整的答案 我试着把它整理好 这样人们就不会讨厌我或我糟糕的英语 我正在使用带有故事板和 ARC 的 Xcode 4 2我可以从我的 plist 文件中读取 我的任务只是将更新后的值写回我的
  • 如何本地化 iOS info.plist 文件中的字符串?

    As you might know the iOS 8 requires NSLocationWhenInUseUsageDescription key for using user s location I have added this
  • 在核心数据持久存储中传送静态(只读)数据的正确方法是什么?

    我想发送静态只读数据以在我的核心数据模型中使用 问题是 存在明显不同的持久存储类型 我不知道这些类型的格式是否应该是不透明的 或者我是否应该能够手动构造它们 现在我只有一个 plist 而且非常小 总共可能有 30 个条目 我是否应该在首次
  • iOS 发行版 - plist 的 itms-services 协议链接中的参数

    我想在 itms services 链接中传递用户 ID 和密码 以便可以访问受保护的 plist 澄清一下 在下面的链接中 无法直接访问 plist 因为访问需要输入用户名和密码才能访问 plist a href 目前上面的链接出现错误
  • NSPropertyListSerialization propertyListWithData 产生不兼容的转换警告/错误

    我正在尝试使用以下代码从 plist 中读取数据 NSString error NSData tempData NSData alloc initWithContentsOfFile Data plist NSDictionary temp
  • 替换嵌套 NSDictionary 中出现的 NSNull

    这个问题类似于这个问题 https stackoverflow com questions 8075147 replace all nsnull objects in an nsdictionary 但是此方法仅适用于字典的根级别 我正在寻
  • 编辑 plist 中的现有数据

    通过编码检查数据是否已经存在后 如何覆盖 plist 中的现有数据 详细地 我将用户名和密码保存在位于文档目录中的 plist 文件中 现在 如果用户选择更改密码选项 plist 应检查他的用户名是否存在 如果存在 那么他输入的新密码应该覆
  • 读取和写入 NSMutableDictionary 到 plist 文件

    我正在努力拯救NSMutableDictionary in applicationDidEnterBackground of AppDelegate m一个到一个plist文件 保存后 我立即尝试检查该文件是否存在并读回 但找不到该文件 N
  • 在 bash 中解析 mobileprovision 文件?

    我正在构建一个 php bash mysql 系统 用于自动分配 iPhone 应用程序 但我想读取项目的 mobileprovision 文件中的应用程序标识符密钥 并据此更改它的 info plist 文件 如果 cfbundleide
  • iPhone - 存储数据的不同方式、优点和缺点

    您能否向我解释一下在 iPhone 上存储数据的不同方式 以及每种方式的优缺点 我读过很多关于 UserDefaults CoreData XML plist 等的内容 但我有点迷失了 目前 我的理解是 UserDefault 用于首选项
  • 将一组新数据写入 Plist 而不是覆盖它

    我试图获取一个 plist 来存储多组数据 但每次保存 使用 ActionSheet 中的按钮 时 它都会覆盖前一组数据 我想添加多个 朋友 及其数据 我不太热衷于使用 Core Data 所以我想知道如何使用 Plist 来做到这一点 这
  • iOS 8 Swift 读取 Plist

    我想从 plist 文件中读取整数值 我有以下代码 let path NSBundle mainBundle pathForResource savedState ofType plist let dict NSDictionary con
  • launchctl 无法运行二进制文件并以代码 78 退出

    我一直在构建一个 golangapp https gist github com krlc 8b9a79b33b857d1a66221ffc802d3c0d带有系统托盘 GUI 我想了launchctl每当我登录时运行我的程序 程序编译并运
  • 从字典和数组的 plist 中读取/写入数据,并将不同级别加载到 TableView 中

    我对使用属性列表有点困惑 我已经阅读了有关该主题的大多数其他问题 但我仍然很困惑 因为它们只进入一层 因此任何帮助将不胜感激 我想加载一个存储数据的plist 如下所示 我的故事板中有三个视图控制器 两个 TableView 控制器和一个空
  • 在后台从 url 加载一个大 plist

    我从 url 加载一个大的 plist 文件 我必须等待几秒钟才能使用该应用程序 有什么解决办法吗 如何在后台加载它 是GCD我需要的 如何实施 My code NSString urlStr NSString alloc initWith
  • 如何设置 NSUserDefault Key 的初始值?

    我想为 NSUserDefault 键设置一些初始值 以便应用程序的第一次运行具有一些合理的初始设置 我以为我在应用程序包 plist 中遇到了一种简单的方法来执行此操作 但现在我找不到它 有任何想法吗 您应该使用registerDefau
  • 带有 WatchPaths 键的 Launchd.plist:如何设置最小间隔?

    如何使用 WatchPath 键为 launchd plist 脚本设置最小间隔 例如 我希望每次目录中出现新文件时都运行一个脚本 但我希望它最多每小时运行一次 launchd plist 可能看起来像这样
  • 无法在 Swift 中获取 plist URL

    我对这个真的很困惑 网络上有很多问题询问 如何从 Swift 中的 plist 文件获取信息 并且到处都发布了相同的答案 let path NSBundle mainBundle pathForResource Config ofType
  • 我可以根据我正在构建的操作系统导入 Golang 包吗?

    假设我有一个基于哪个操作系统的 go 项目 在某些情况下是哪个发行版 我想使用 Systemd 客户端包 Upstart 客户端包 sysv 客户端包 launchd 客户端包 是否可以有选择地导入每个包 以便我只导入我正在构建的每个操作系

随机推荐