* * * * * command to execute
│ │ │ │ │
│ │ │ │ └─── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
│ │ │ └──────── month (1 - 12)
│ │ └───────────── day of month (1 - 31)
│ └────────────────── hour (0 - 23)
└─────────────────────── min (0 - 59)
正如Mecki所指出的,launchd将是实现这一点的方法,launchd有一个名为Lingon的GUI界面,您可能希望查看它,而不是手动编辑launchd文件: Lingon是一个图形用户界面,用于为Mac OS X Leopard 10.5创建编辑启动配置文件。 [剪...] 编辑配置文件比以往任何时候都容易在这个版本中,它有两个不同的模式。基本模式,其中有一个非常简单的界面中提供的最常见的设置和Maven模式,您可以添加所有的设置要么直接在文本中或通过菜单插入它们。
7条答案
按热度按时间8i9zcol21#
使用launchd就可以了,它是一个非常强大的启动系统,同时也是Mac OS X的标准启动系统(当前的OS X版本没有它甚至无法 Boot )。对于那些不熟悉
launchd
的人(或与OS X的一般),它就像是init
、cron
、at
、SysVinit之间的杂交产品(init.d
),inetd
,upstart
和systemd
。借用了所有这些项目的概念,但也提供了您可能在其他地方找不到的东西。每个服务/任务都是一个文件。文件的位置取决于以下问题:“此服务应该何时运行?”和“此服务需要哪些权限?”
系统任务转到
无论是否有用户登录系统,它们都将运行。它们将以“root”权限启动。
如果它们仅在任何用户登录时运行,则它们将转到
并且将以刚登录的用户的特权来执行。
如果它们仅在您登录时运行,则它们将转到
其中~是你的HOME目录。这些任务将使用你的权限运行,就像你自己通过命令行或双击Finder中的文件启动它们一样。
注意,还有
/System/Library/LaunchDaemons
和/System/Library/LaunchAgents
,但是和往常一样,/System
下的所有东西都是由OS X管理的,你不应该在那里放置任何文件,你不应该在那里修改任何文件,除非你真的知道你在做什么。在系统文件夹里乱翻会让你的系统无法使用(让它进入一种状态,甚至会拒绝再次 Boot )这些是苹果放置launchd
任务的目录,这些任务在启动期间让你的系统启动并运行,根据需要自动启动服务,执行系统维护任务,等等。每个
launchd
任务都是一个PLIST格式的文件。它应该有反向域名表示法。例如,您可以命名您的任务这个plist可以有各种各样的选项和设置,初学者不适合一只手写一个,所以你可能想买一个像LaunchControl(商业版,18美元)或Lingon(商业版,14.99美元)这样的工具来创建你的任务。
例如,它可能如下所示
此代理将每1800秒运行一次shell脚本/usr/local/bin/my-script.sh(每30分钟)。您还可以让任务在特定日期/时间运行(基本上launchd可以做cron能做的所有事情),或者您甚至可以禁用“OnDemand”,使launchd保持进程永久运行(如果它退出或崩溃,launchd将立即重新启动它)。您甚至可以限制一个进程可以使用多少资源。
**更新:**尽管
OnDemand
仍然受支持,但已被弃用。新设置命名为KeepAlive
,这更有意义。它可以有布尔值,在这种情况下,它与OnDemand
完全相反(将其设置为false
的行为就像OnDemand
是true
,反之亦然)。伟大的新特性是,它也可以有字典值而不是布尔值。如果它有字典值,您有两个额外的选项,可以给予您更细粒度地控制在哪些情况下任务应该保持活动。例如,它只在程序以零退出代码终止时保持活动,只在磁盘上存在某个文件/目录时保持活动,只在另一个任务也处于活动状态时,或只在网络当前打开时保持活动。您还可以通过命令行手动启用/禁用任务:
命令可以是
load
或unload
,用于加载或再次卸载plist,在这种情况下,参数是文件的路径。或者命令可以是start
或stop
,用于启动或停止这样的任务,在这种情况下,参数是标签(com.example.my-fancy-task
)。**更新:**尽管
load
、unload
、start
和stop
仍然有效,但它们现在是旧版命令。新命令是bootstrap
、bootout
、enable
和disable
,语法和选项略有不同。一个很大的区别是disable
是持久性的,因此一旦服务被禁用,它将保持禁用状态,即使在重新启动之后,直到您再次启用它。此外,您可以使用kickstart
立即运行任务,无论它是如何配置运行的。launctl
仍然可以区分,即使同一用户的不同登录、不同UI会话也有自己的域(例如,同一用户可以一次本地登录,一次通过SSH远程登录,并且可以为任一会话运行不同的任务),并且每个单个运行的进程也是如此。现在,您可以使用system/com.example.my-fancy-task
或user/501/com.example.my-fancy-task
来标识任务,其中501是特定用户的用户ID。*请参见plist format和
launchctl
command line tool的文档。kxeu7u2r2#
你可以使用非常方便的plist生成器:http://launched.zerowidth.com/(不需要购买任何东西...)
它将为您提供一个shell单行程序,用于使用已经推荐的launchd注册新的调度作业
evrscar23#
在MacOSX上,您至少有以下选项:
从个人经验来看,cron是最可靠的。当我测试的时候,launchd有很多bug和怪癖。iCal警报只在你登录的时候运行(但那可能是你更喜欢的)。
7ivaypg94#
Cron的语法
您可以使用cron来调度任务。
作业以下列格式指定。
示例:
示例:
注册作业
您可以以root用户身份运行脚本。
一旦安装了cron任务,就可以使用crontab-l列出任务。
如果要了解有关cron调度表达式的详细信息,可以访问
https://crontab.guruhttps://ole.michelsen.dk/blog/schedule-jobs-with-crontab-on-mac-osx.html
kuarbcqp5#
正如Mecki所指出的,launchd将是实现这一点的方法,launchd有一个名为Lingon的GUI界面,您可能希望查看它,而不是手动编辑launchd文件:
Lingon是一个图形用户界面,用于为Mac OS X Leopard 10.5创建编辑启动配置文件。
[剪...]
编辑配置文件比以往任何时候都容易在这个版本中,它有两个不同的模式。基本模式,其中有一个非常简单的界面中提供的最常见的设置和Maven模式,您可以添加所有的设置要么直接在文本中或通过菜单插入它们。
rqenqsqc6#
MAC操作系统有一个Automator工具,它与Windows中的Task Scheduler相同。使用Automator,您可以每天计划任务,并将任务与循环日历事件链接,以便在每天的指定时间运行脚本。参考链接to run scripts on daily basis in Mac OS
66bbxpm57#
对于苹果脚本,我设置了一个特殊的iCal日历,并使用闹钟来周期性地运行它们,对于命令行工具,我使用launchd。