小编mån*_*ata的帖子

使用 cron 运行脚本在 mac 上不起作用

我一直试图运行一个每分钟执行一个 python 脚本的 cron 作业。执行“which python”后,我按如下方式设置了 cron 作业:

SHELL=/bin/bash
MAILTO=MyMac

PATH=bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

*/1 * * * * * /Users/MyMac/anaconda3/bin/python
/Users/MyMac/desktop/cron_test/test.py
Run Code Online (Sandbox Code Playgroud)

作业的描述在一行中,并且在定义的末尾有一个换行符。

我收到以下错误/var/mail/MyMac

/bin/bash: AnacondaProjects: command not found
Run Code Online (Sandbox Code Playgroud)

所以我删除了:

SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)

我得到了:

/bin/sh: MyMac: command not found
Run Code Online (Sandbox Code Playgroud)

然后我尝试了 /usr/bin/python 的所有可能组合,有或没有 lib、anaconda 等,有或没有指定 PATH、SHELL、MAIL。不幸的是,没有成功。

我究竟做错了什么?

编辑

所以这是我根据收到的建议所做的总结:

我试过:

* * * * * env > /tmp/env.output, 
Run Code Online (Sandbox Code Playgroud)

首先我得到一个错误:

/bin/bash: /tmp/env.output: Permission denied, 
Run Code Online (Sandbox Code Playgroud)

所以我做了一个 cron Job 作为 sudo。env.output 中的路径是:

PATH= bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/Users/MyMac/AnacondaProjects
Run Code Online (Sandbox Code Playgroud)

最后,我将我的 cronjob(作为普通用户而不是 sudo)设置为:

SHELL=/bin/bash
MAILTO=my_address@mail.com
PATH=bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/Users/MyMac/AnacondaProjects:/Users/MyMac/anaconda3/bin/python:/usr/bin/env

 * * * * * /Users/MyMac/anaconda3/bin/python /Users/MyMac/desktop/cron_test/test.py …
Run Code Online (Sandbox Code Playgroud)

python macos cron

4
推荐指数
2
解决办法
3677
查看次数

标签 统计

cron ×1

macos ×1

python ×1