在Mac上开始使用cronjobs

时间:2009-11-05 21:07:20

标签: macos terminal cron crontab

我正在尝试熟悉cron作业,我认为我得到了基本的想法(调度,语法等),但是,我似乎无法在我的Mac上使用终端 - 正是这样做我找到了Crontab?我应该如何引用脚本的路径?

我要做的是在远程计算机上点击一个php脚本(http://..。) - 这有可能吗?

6 个答案:

答案 0 :(得分:8)

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

例如,要在每天10:00a下载stackoverflow页面,请运行crontab -e,输入此行,然后保存/退出。输出将写入主目录中的文件。

0 10 * * * /usr/bin/curl -s http://stackoverflow.com > ~/stackoverflow.html

答案 1 :(得分: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复制并转载此处供您参考。

答案 2 :(得分:4)

如果有人在Snow Leopard上与cron战斗的人偶然发现这个问题,我会疏通这个旧线程。

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

Cron整合不好。如果它发送一条消息,它最终会出现在/ var / mail / user_name中,当然Apple Mail对此一无所知。

crontab -e抛出'必须在适当位置编辑临时文件'。显然vim与vi不兼容。然后,您可以执行crontab“&lt; /tmp/crontab.whatever”(查看/ tmp并查看实际使用的名称),它将最终出现在正确的位置,假设您没有输入拼写错误,则可以正常工作

是的,需要一段时间才能解决这个问题:(

答案 3 :(得分:3)

launchd功能强大,但你真的不想自己编写plist。获取Lingon。它是一个开源的,设计精良的GUI,用于创建和管理系统的启动任务。

答案 4 :(得分: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

答案 5 :(得分:0)

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

MacTech杂志最近一直在做一系列关于launchd的文章,我强烈建议你阅读它们。我知道我确实学到了很多东西。

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

2009年10月,(第25卷,第10期) 雪豹,发射和午餐 更多的发布食谱,以及雪豹的变化

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