为什么使用 crontab 我得到“-bash:应用程序:找不到命令”?
Why using crontab I get "-bash: Applications: command not found"?
我正在尝试使用 crontab 在 MacOS 上安排一个简单的 python 脚本。我在 SO 中看到了很多指南和其他问题的答案,但仍然无法完成我的任务。其实我对terminal之类的东西不是很熟悉,不过好像没那么难,希望能解决。
我采用了两种不同的方法。
第一种方法:
- 我在终端上使用命令
crontab -e
- 在 VIM 中,我按 I 插入并粘贴以下内容:
* * * * * /usr/bin/python mypath/ap.py
按“esc”和“:qw”关闭VIM window.
crontab -l
按预期显示我的 cron 条目,但脚本没有任何反应(它应该创建一个 txt 文件)。
第二种方法:
- 我将这一行粘贴到终端中:
* * * * * /usr/bin/python mypath/ap.py >> mypath/MyCronLog.txt 2>&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 调用时崩溃,而如果你从包含目录调用它,它会工作。
我正在尝试使用 crontab 在 MacOS 上安排一个简单的 python 脚本。我在 SO 中看到了很多指南和其他问题的答案,但仍然无法完成我的任务。其实我对terminal之类的东西不是很熟悉,不过好像没那么难,希望能解决。
我采用了两种不同的方法。
第一种方法:
- 我在终端上使用命令
crontab -e
- 在 VIM 中,我按 I 插入并粘贴以下内容:
* * * * * /usr/bin/python mypath/ap.py
按“esc”和“:qw”关闭VIM window.
crontab -l
按预期显示我的 cron 条目,但脚本没有任何反应(它应该创建一个 txt 文件)。
第二种方法:
- 我将这一行粘贴到终端中:
* * * * * /usr/bin/python mypath/ap.py >> mypath/MyCronLog.txt 2>&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 调用时崩溃,而如果你从包含目录调用它,它会工作。