在 OS X 上,如文档所述:
虽然它仍然受支持,但cron
不是推荐的解决方案。它已被弃用,取而代之的是launchd
.
如果您已经cron
从长期的 Unix 经验中了解了自己的手背,或者您正在 OS X 和 Linux 上实现相同的东西,或者您有其他好的借口,请继续使用cron
. 但很明显,这里的情况并非如此。
如果您使用的是launchd
,这里的答案将是微不足道的。从手册页:
WorkingDirectory <string>
此可选键用于在运行作业之前指定 chdir(2) 的目录。
或者,如果您想修改用于运行应用程序的环境(例如,将其目录放入PYTHONPATH
),这同样容易。
launchd.plist
这是每小时运行程序的示例文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.ProgramToRun</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>Documents/workspace/programfolder/src/ProgramToRun.py</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>WorkingDirectory</key>
<string>Documents/workspace/programfolder/src/</string>
</dict>
</plist>
很多老 Unix 手会看到这个并说,“哇,这太冗长了。” 并且我同意。另一方面,它并没有被弃用。此外,它还有额外的功能,它与睡眠的交互有据可查且易于配置等。Apple 文档中到处都有示例和解释,将告诉您如何进行这项工作,而cron
基本上除了联机帮助页和一个很少有文件说“如果您知道自己在做什么,请继续使用它,但我们不会帮助您”。