1

我需要在给定的时间内自动打开我的应用程序并从该应用程序运行特定任务。所以我在谷歌搜索并想出了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>  

这样做的问题是,它只有在计算机重新启动时才起作用,否则将不会被调用。那么,我的第二个问题是 launchd 何时注册活动?

4

1 回答 1

1

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

如果你想从你的应用程序中安排一些东西——一种方法是调用“系统”来执行启动实用程序。launchd 也有未记录的 API,但我找不到使用它进行调度的方法。

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

于 2012-08-01T05:51:44.013 回答