当launchd将注册活动?

时间:2012-08-01 05:23:10

标签: macos cocoa launchd

我需要打开我的应用程序并在给定时间内自动从该应用程序运行特定任务。所以我在谷歌搜索并提出了launchd。第一个问题,这是正确的选择吗? 我创建了一个plist,并将其保存在~/Library/LaunchAgents/fileName.plist

位置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.companyname.example</string>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>mac_1</string>
    <key>Program</key>
    <string>open</string>
    <key>ProgramArguments</key>
    <array>
        <string>Argument_1</string>
        <string>Argument_2</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Day</key>
        <integer>1</integer>
        <key>Hour</key>
        <integer>10</integer>
        <key>Minute</key>
        <integer>41</integer>
        <key>Month</key>
        <integer>8</integer>
        <key>Weekday</key>
        <integer>3</integer>

    </dict>
       <key>KeepAlive</key>
    <true/>
</dict>
</plist>  

问题是,它只在计算机重新启动时才有效,否则不会被调用。那么,我的第二个问题,当发射器将注册事件?

1 个答案:

答案 0 :(得分:1)

有一个名为“launchctl”的实用程序 您需要使用它将plis文件加载到launchd中。 键入:launchctl load plist_file。

如果你想从你的应用程序安排一些东西 - 一种方法就是调用“system”来执行launchtl实用程序。还有用于launchd的未记录的API,但我找不到使用它进行调度的方法。

launchd将是在系统上安排某些内容的最简单方法,因为它已达到调度属性。