>用户登录时
>在一天中的某些时间(例如:中午12:00).
>在某些时间间隔(例如:每两个小时).
除了调度之外,如果用户删除应用程序,也应该很容易取消调度程序并且不会导致错误.
本质上,该程序是一个卫星命令行可执行文件,放在同一个.app包中的主应用程序文件旁边.该程序的目的是在用户的主目录中(在〜/ library / Application Support / MyApp中)进行一些后台数据更新.
crontab是一个很好的候选人吗? crontab的手册页说该功能已经被launchctl吸收,但我似乎无法找到如何安排特定时间来运行该实用程序.
谢谢.
解决方法 launchd是执行此 *** 作的正确方法(在Mac上不推荐使用crontab而支持launchd).您将创建一个pList文件,其中包含有关您的程序的信息(可执行文件名,参数等),其中一部分将是(警告在浏览器中输入并且未经测试):<key>StartCalendarInterval</key><dictionary> <key>Hour</key> <integer>12</integer></dictionary><key>StartInterval</key><integer>7200</integer><key>limitLoadToSessionType</key><string>Aqua</string><key>RunAtLoad</key><true/>
> StartCalendarInterval应该在第12个小时(中午)的顶部运行您的程序.
> StartInterval应每2小时运行一次程序(= 7200秒)
> limitLoadToSessionType仅在Aqua会话开始时加载您的程序(用户实际登录到窗口服务器(因此,如果用户ssh进入,这将阻止加载)
> RunAtLoad告诉可执行文件在加载pList时运行.这与limitLoadToSessionType结合使用,应该在用户登录时启动可执行文件.
StartInterval和StartCalendarInterval可能是互斥的.如果是这种情况,您可以取出StartInterval键并将StartCalendarInterval内容更改为:
<key>StartCalendarInterval</key><array> <dictionary> <key>Hour</key> <integer>0</integer> </dictionary> <dictionary> <key>Hour</key> <integer>2</integer> </dictionary> <dictionary> <key>Hour</key> <integer>4</integer> </dictionary> <dictionary> <key>Hour</key> <integer>6</integer> </dictionary> ... <dictionary> <key>Hour</key> <integer>12</integer> </dictionary> ... <dictionary> <key>Hour</key> <integer>22</integer> </dictionary></array>
有关更多信息,请参阅man launchd.pList.
总结以上是内存溢出为你收集整理的使用Cocoa计划任务?全部内容,希望文章能够帮你解决使用Cocoa计划任务?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)