【发布时间】:2013-02-01 18:55:42
【问题描述】:
我在使用 UNIX 的 OSX 机器上。我有一个 Python 程序,我想每隔一小时左右运行一次,所以我在编辑器中设置了一个基本的 cron 命令:
0 * * * * python Documents/workspace/programfolder/src/ProgramToRun.py
我还没有真正尝试过,因为我已经遇到了问题。我试图从我的主目录运行python Documents/workspace/programfolder/src/ProgramToRun.py 命令,但脚本无法在其目录中找到它所依赖的任何文件。就好像该程序以某种方式在我的主目录中运行并且找不到它的任何依赖项。如果我 cd 进入程序所在的文件夹并执行 python ProgramToRun.py,它工作正常。所以我的问题是如何让 cron 像从它的目录运行它一样对待这个程序?我给的目录会起作用吗,还是我需要给一些更绝对的东西,比如/Users/MyName...等?
【问题讨论】:
-
只在命令中包含cd'ing?或者,使脚本可以在任何地方安全运行。
-
我经常在 crontab 中使用纯 shell 脚本,然后引导真正的脚本。它使您可以灵活地查看正在发生的事情,还允许您更改代码的实现。它可能以 python 脚本开始,然后变为 exe 或其他东西。在我的 shell 脚本中,我经常使用
scriptdir=$(cd $(dirname $0); pwd)或者在你的情况下是cd $(dirname $0) -
你为什么在 OS X 上使用
cron而不是launchd?几乎所有提到cron的文档都以"Note: Although it is still supported, cron is not a recommended solution. It has been deprecated in favor of launchd." 之类的开头。如果您已经知道cron,那是使用它的好理由,否则,为什么?