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がイベントに登録するときの私の2番目の質問は?

4

1 に答える 1

1

「launchctl」と呼ばれるユーティリティがあります。これを使用して、plisファイルをlaunchdにロードする必要があります。タイプ:launchctlloadplist_file。

アプリケーションから何かをスケジュールしたい場合、1つの方法は、「システム」を呼び出してlaunchtlユーティリティを実行することです。launchd用の文書化されていないAPIもありますが、スケジューリングに使用する方法が見つかりませんでした。

launchdは、リーチスケジューリングプロパティを備えているため、システム上で何かをスケジュールする最も簡単な方法です。

于 2012-08-01T05:51:44.013 に答える