为什么使用 crontab 我得到“-bash:应用程序:找不到命令”?

Why using crontab I get "-bash: Applications: command not found"?

我正在尝试使用 crontab 在 MacOS 上安排一个简单的 python 脚本。我在 SO 中看到了很多指南和其他问题的答案,但仍然无法完成我的任务。其实我对terminal之类的东西不是很熟悉,不过好像没那么难,希望能解决。

我采用了两种不同的方法。

第一种方法:

  1. 我在终端上使用命令crontab -e
  2. 在 VIM 中,我按 I 插入并粘贴以下内容:
* * * * * /usr/bin/python mypath/ap.py
  1. 按“esc”和“:qw”关闭VIM window.

  2. crontab -l 按预期显示我的 cron 条目,但脚本没有任何反应(它应该创建一个 txt 文件)。

第二种方法:

  1. 我将这一行粘贴到终端中:
* * * * * /usr/bin/python mypath/ap.py >> mypath/MyCronLog.txt 2>&1
  1. 通过这种方式,我可以看到一个 txt 文件,我可以在其中读取日志和最终错误。 MyCronLog.txt 显示:-bash: Applications: command not found-bash: ap.py: command not found.

我的 python 脚本位于桌面上的一个文件夹中(我不知道这是否重要)。

此外,我 运行 我的 python 终端脚本,它运行良好。 任何建议表示赞赏!

编辑 1: 我的 python 脚本的路径如下: /Users/myname/Desktop/ap/ap.py

编辑 2: “/opt/anaconda3/bin/python”代替“/usr/bin/python”,但没有任何变化。

问题似乎出在您的 python 脚本中。我想 txt 文件已创建,但位于错误的文件夹中。当 cron 调用 python 脚本时,工作目录不是该脚本的目录(请参阅 here). Look here 了解解决方法。

编辑:

脚本的行为可能取决于调用它的目录(这不是编写脚本的理想方式)。当您在 /Users/myname/Desktop/ap 并调用 python ap.py 时,这可能会导致与从 /Users/myname/Desktop

调用 python ap/ap.py 不同的结果

您可以通过调用这个简短的脚本来验证这一点:

import os

print(os.getcwd())

我可以想象当你的脚本被 cron 调用时崩溃,而如果你从包含目录调用它,它会工作。