我一直试图运行一个每分钟执行一个 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
作业的描述在一行中,并且在定义的末尾有一个换行符。
我在
/var/mail/MyMac
中收到以下错误:/bin/bash: AnacondaProjects: command not found
所以我删除了:
SHELL=/bin/bash
我得到了:
/bin/sh: MyMac: command not found
然后我尝试了/usr/bin/python 的所有可能组合,有或没有 lib、anaconda 等,有或没有指定 PATH、SHELL、MAIL。不幸的是,没有成功。
我究竟做错了什么?
编辑
所以这是我根据收到的建议所做的总结:
我试过:
* * * * * env > /tmp/env.output,
首先我得到一个错误:
/bin/bash: /tmp/env.output: Permission denied,
所以我做了一个 cron Job 作为 sudo。 env.output 中的路径是:
PATH= bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/Users/MyMac/AnacondaProjects
最后,我将我的 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
它仍然不起作用。
python 代码是:
#!/usr/bin/env python
def main():
f = open("test.txt", "w+")
f.write("HELLO" + '\n')
f.close()
if __name__ == "__main__":
print("Print")
main()
我期待着获得并尝试新的方法。
最佳答案
尝试这样做:
它应该显示在列表中,旁边有一个复选标记。
我在 cron 中使用一个简单的 csh 脚本进行了尝试,并且成功了。
(归功于我的消息来源:https://blog.bejarano.io/fixing-cron-jobs-in-mojave)
关于python - 使用 cron 运行脚本在 mac 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487270/