首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Launchd‘无效属性列表’

Launchd‘无效属性列表’
EN

Stack Overflow用户
提问于 2022-11-28 14:40:36
回答 1查看 30关注 0票数 0

我希望有人能指出我正在编写和发布的一个启动脚本可能出了什么问题。

我打算每天凌晨3点15分运行一个python脚本。(它将要运行的计算机是24小时运行的,但如果有一种方法将其融入到日常运行中,那么在计算机关闭或需要被中断的情况下,这将是很棒的。)

当我试图加载文件时,我会得到以下返回消息:

代码语言:javascript
复制
jace@Jaces-Mac-Pro ~ % launchctl load /Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist
/Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist: Invalid property list
jace@Jaces-Mac-Pro ~ % 

根据我所关注的教程和网上的几页,我应该把所有的东西都正确地摆好,但感觉我遗漏了一些东西。

如果有人能指出我的错误并提出解决方案,我会非常感激的!

我对这个文件类型和写作完全陌生,但我觉得这将是我完成工作所需要的。

我想要运行的文件如下-

代码语言: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>com.launch.phoneconfig</string>
       <key>ProgramArgument</key>
    <array>
        <string>/usr/local/bin/python3</string>
        <string>/Users/jace/Desktop/Filing_Cabinet/Python_Folder/Selenium_Projects/my_phone_config01.py</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>1

P.s

我试着把文件放在我的mac的启动守护程序文件夹中,但似乎无法在库中找到它,只能找到'LaunchAgents‘文件夹。不知道这是否有任何影响,但让我知道,如果有更多的信息,我可以提供这个运行。

谢谢您抽时间见我。

我希望代码能够在指定的时间加载和运行,并在终端中输入'launchctl list‘时与其他.plist文件一起返回。

从注释更新

(谢谢你指出@Chepner)运行'putil -lint‘允许我看到脚本中的一个错误。结果的例子。

之前,w/错误:

代码语言:javascript
复制
jace@Jaces-Mac-Pro LaunchAgents % plutil /Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist
/Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist: Encountered unexpected character < on line 17 while looking for close tag

之后,一旦修复:

代码语言:javascript
复制
jace@Jaces-Mac-Pro LaunchAgents % plutil -lint /Users/jace/Desktop/Filing_Cabinet/LaunchD_Folder/launch_phoneconfig/com.launchd.phoneconfig.plist
/Users/jace/Desktop/Filing_Cabinet/LaunchD_Folder/launch_phoneconfig/com.launchd.phoneconfig.plist: OK

再次尝试运行代码,但结果如下所示-

代码语言:javascript
复制
jace@Jaces-Mac-Pro LaunchAgents % launchctl load /Users/jace/Desktop/Filing_Cabinet/LaunchD_Folder/launch_phoneconfig/com.launchd.phoneconfig.plist
/Users/jace/Desktop/Filing_Cabinet/LaunchD_Folder/launch_phoneconfig/com.launchd.phoneconfig.plist: Invalid or missing Program/ProgramArguments
jace@Jaces-Mac-Pro LaunchAgents % 

从应答更新

谢谢你的建议@切普纳。

调整行,将程序和程序参数分隔开来,似乎使一切都可以说“ok”。严格地说,这回答了我的问题!

现在唯一的问题是它没有实际运行,我可以运行python脚本--它的目的是运行得很好,但似乎无法通过这个方法来运行。任何建议或链接,我可以审查,以帮助解决这一点?

谢谢你抽出时间来帮助我!

代码语言:javascript
复制
Last login: Wed Nov 30 14:44:29 on console
jace@Jaces-Mac-Pro ~ % plutil /Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist

/Users/jace/Library/LaunchAgents/com.launchd.phoneconfig.plist: OK

jace@Jaces-Mac-Pro ~ % launchctl list
PID Status  Label
-   0   com.launch.phoneconfig (removed the other items that would be returned to show clearly it loaded)
jace@Jaces-Mac-Pro ~ % 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-28 17:18:54

我认为问题在于,您试图将整个命令行指定为程序参数,而不是将程序名称与其参数分开指定。

代码语言:javascript
复制
<dict>
    <key>Label</key>
      <string>com.launch.phoneconfig</string>
    <key>Program</key>
      <string>/usr/local/bin/python3</string>
    <key>ProgramArgument</key>
      <array>
        <string>/Users/jace/Desktop/Filing_Cabinet/Python_Folder/Selenium_Projects/my_phone_config01.py</string>
      </array>
    <key>RunAtLoad</key>
      <true/>
    <key>StartCalendarInterval</key>
      <dict>
        <key>Hour</key
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
      </dict>
</dict>

如果是这样的话,运行时错误可能更具体(缺少Program,所以它可以这么说,而不是暗示ProgramArguments也有问题)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74602252

复制
相关文章

相似问题

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