launchd启动代理不执行命令

时间:2012-02-09 17:44:00

标签: execution launchd

我在Mac上使用Skype和Adium客户端。我有两个脚本(Ruby,如果重要),start_chatskill_chats启动/终止两个应用程序。这些脚本都是可执行的,并且可以从命令行运行。我曾经在Snow Leopard中使用cron在预定的时间运行这些脚本:start_chats当我进入我的办公室时是8:00,kill_chats来杀死他们(因此,让我退出所有在我离开办公室后的6:00(18:00)连接帐户。

由于我最近得到了一台带有Lion的新机器,cron的行为非常不稳定,而且往往不执行其工作(我在同一个crontab中有其他工作)。因此,在努力跟上技术的过程中,我决定尝试使用launchd plist进行重新设计。我已经浏览了许多“教程”以及如何构建一个plist来执行我的脚本的基于时钟的简单执行。大多数这些教程的问题在于,在创建plist之后,他们并没有真正告诉您该怎么做。以下是我的示例kill_chats plist(在this post的帮助下构建):

<?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>local.me.kill_chats</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/me/bin/kill_chats</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>18</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

是的,它被命名为local.me.kill_chats.plist,我把它放在我的~/Library/LaunchAgents/目录中。请注意,我也尝试使用Program键,但这也没有用。如果我跑

$> launchctl load ~/Library/LaunchAgents/local.me.kill_chats.plist

它说列表已经加载了,实际上我可以在

中看到它
$> launchctl list | egrep kill_chats
   -    0   local.me.kill_chats

但是当我的系统时钟达到plist中指定的时间时,我的kill_chats脚本没有运行。当然,我不会等到18:00再次测试它,所以无论当前时间是什么,我都要提前几分钟,但它仍然没有执行脚本。我甚至尝试了Lingon(较旧的免费版本),但似乎没有任何效果。

我做错了吗?我的plist有问题吗?正如我所说,我已经浏览了很多不同的网站(甚至很多Stackexchange帖子),我的列表似乎是正确的。我只是不确定如何让“它”“使用”我的清单。任何帮助将不胜感激。

(注意:管理员可以根据需要将其迁移到AppleSuperuser

0 个答案:

没有答案