Launch Agent 不会 运行 shell 脚本

Launch Agent will not run shell script

下面是我的plist:

<plist version="1.0">
    <dict>
<key>EnableGlobbing</key>
<true/>
    <key>Label</key>
        <string>com.system.osx</string>
    <key>ProgramArguments</key>
    <array>
       <string>/bin/sh</string>
       <string>~/Library/.system/connect.sh</string>
    </array>
<key>KeepAlive</key>
<true/>
<key>ResetAtClose</key>
<true/>
    <key>RunAtLoad</key>
        <true/>
    <key>StartInterval</key>
        <integer>60</integer>
    <key>AbandonProcessGroup</key>
        <true/>
    </dict>
</plist>

在我 运行 加载 plist 之前,我总是:

一个。 chmod 777 ~/Library/.system/connect.sh

乙。 chmod 777 ~/Library/LaunchAgents/com.system.osx.plist

摄氏度。通过执行 sh ~/Library/.system/connect.sh 检查以确保我的脚本正常工作,并且它始终如此。

D. launchctl load ~/Library/LaunchAgents/com.system.osx.plist

加载 plist 后,shell 脚本不会 运行,正如您在 plist 中看到的那样,我已确保它首先 运行s /bin/sh .

非常感谢任何帮助,最近我的问题在这里被忽略了。

更新

我已将 ~/Library/.system/connect.sh 更改为 /Users/MyUser/Library/.system/connect.sh` 但它仍然没有 运行 宁 shell 脚本

您需要脚本的完整路径。 用户域launch agent默认权限为644

更新:同时使用键 KeepAliveStartInterval 是有问题的。由于脚本应该每分钟 运行,删除 KeepAlive 键和值

如果您使用的是 OSX Yosemite (10.10) 或更高版本,您将无法再使用 ~/ 引用您的主目录,即使您设置了 EnableGlobbing<true/>。参考:https://apple.stackexchange.com/a/153149/15940

我已经完成了这项工作所以我只能假设你的 plist 文件有错误或选项来阻止它 运行。这是我的有效 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>net.silicontrip.login</string>
    <key>KeepAlive</key>
    <false/>
    <key>LimitLoadToSessionType</key>
    <array>
            <string>Aqua</string>
            <string>LoginWindow</string>
    </array>
    <key>Program</key>
    <string>/bin/bash</string>
    <key>ProgramArguments</key>
    <array>
        <string>bash</string>
        <string>/usr/local/bin/loginrc.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

这两者在 launchctl 加载或登录后立即起作用。