6

我正在尝试熟悉 cron 作业,并且我想我了解了基本概念(调度、语法等),但是,我似乎无法在带有终端的 mac 上正确使用它——我到底在哪里找到克朗塔布?我应该如何引用脚本的路径?

我想要做的是在远程机器上打一个 php 脚本(http://.. .) - 这可能吗?

4

6 回答 6

8

键入crontab -e以编辑您的 cron 表并crontab -l列出当前内容。键入man 1 crontab以获取有关该命令man 5 crontab的更多信息以及有关 cron 表文件格式的更多信息。

比如每天上午 10:00 下载 stackoverflow 页面,运行crontab -e,输入这一行,然后保存/退出。输出将被写入主目录中的文件。

0 10 * * * /usr/bin/curl -s http://stackoverflow.com > ~/stackoverflow.html
于 2009-11-05T21:18:16.740 回答
5

要开始使用launchd(而不是cron),您首先需要创建一个空.plist文件,例如local.mytask.plist并将其放在某处。~/Library/LaunchAgents大概是个好地方。在文本编辑器中打开它并复制下面的代码

<?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>KeepAlive</key>
<false/>
<key>Label</key>
<string>local.mytask</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/wget</string>
<string>http://someserver/somepage.php</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true />
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
</dict>
</plist>

然后从命令行“激活”文件:

sudo launchctl load /Users/my_username/Library/LaunchAgents/local.mytask.plist

要使其自动加载,~/.launchd.conf请使用同一行(减号sudo launch)创建一个文件

load /Users/my_username/Library/LaunchAgents/local.mytask.plist

以上说明已从www.davidlanier.com复制并在此处转发以供您参考。

于 2009-11-05T23:26:41.020 回答
4

万一其他人在 Snow Leopard 上与 cron 战斗时偶然发现了这一点,我将挖掘这个旧线程。

是的,launchd 应该取代 cron,但实际上它不能做 cron 可以做的某些事情。

Cron 没有很好地集成。如果它发送一条消息,它会以 /var/mail/user_name 结尾,Apple Mail 当然对此一无所知。

crontab -e 抛出说“必须就地编辑临时文件”。显然 vim 与 vi 不兼容。然后,您可以执行 crontab "< /tmp/crontab.whatever" (查看 /tmp 并查看实际使用的名称),它最终会出现在正确的位置,并且假设您没有打错字,它将起作用。

是的,花了一些时间来解决这一切:(

于 2012-01-18T22:48:53.833 回答
3

launchd 功能强大,但您真的不想自己编写 plist。得到灵贡。它是一个开源的、精心设计的 GUI,用于创建和管理系统的已启动任务。

于 2009-11-06T03:54:01.450 回答
1

自 10.4 以来,Cron 已被launchd取代。除非您计划在某个时候将它们移植到 Linux/Unix 系统,否则您可能应该使用它来编写您的任务。

如果您确实决定使用 cron,请尝试键入crontab -esudo crontab -e. 这些将为您提供不同的 crontab 文件,前者用于您当前运行的用户,后者用于 root 用户。

“点击”一个 URL 可以通过多种方式完成。根据您用来“命中”它的本地脚本,您可以使用该语言的一些内置方法/类。例如,Ruby 脚本会使用net/http,但如果您只是编写 bash 脚本,也可以尝试 curl。做man curl以了解更多信息,但基本命令只是curl http://google.com.

于 2009-11-05T21:13:19.363 回答
0

您不再想使用 cron。正如其他人已经说过的,它已被 launchd 取代,并且 launchd 显然将成为 Mac OS X 的未来。

MacTech 杂志最近在 launchd 上发表了一系列文章,我强烈建议您阅读它们。我知道我确实学到了很多东西。

2009 年 9 月(第 25 卷,第 9 期)25.09 MacEnterprise:推出午餐

2009 年 10 月,(第 25 卷,第 10 期)Snow Leopard、Launchd 和 Lunch 更多推出的食谱,以及 Snow Leopard 的变化

MacTech 中还有其他文章,我建议您搜索他们的网站。

于 2009-11-06T14:16:04.673 回答