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

标签 python macos cron

我一直试图运行一个每分钟执行一个 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()

我期待着获得并尝试新的方法。

最佳答案

尝试这样做:

  • 打开首选项并转到“安全和隐私”->“隐私”
  • 向下滚动到左侧的“完整磁盘访问”并选择它。
  • 点击解锁图标并输入您的密码
  • 点击“+”号添加应用程序
  • 键入“command+shift+G”以打开获取文件对话框(似乎无法导航/usr 目录)
  • 输入应用程序的完整路径名 (/usr/sbin/cron) 并单击“Go”
  • 点击“打开”
    它应该显示在列表中,旁边有一个复选标记。
    我在 cron 中使用一个简单的 csh 脚本进行了尝试,并且成功了。
    (归功于我的消息来源:https://blog.bejarano.io/fixing-cron-jobs-in-mojave)
  • 关于python - 使用 cron 运行脚本在 mac 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487270/

    相关文章:

    python - 递归中的返回语句

    python - 创建分层 python 对象,其中方法的参数来自层次结构

    python - 如何使 re.search() 尝试最佳尝试方法

    ios - 如何在 Swift 中使用命名空间?

    php - Linux(在 BlueHost 服务器上)cron 作业停止传递参数

    python - 正则表达式(Python)-匹配MAC地址

    ios - 即使在删除应用程序缓存后,旧版本的图像也会出现在 iPhone 模拟器中

    ios - 图像文件扩展 Xcode

    php - Laravel 调度调用 Controller

    amazon-web-services - 验证 CloudWatch Events ScheduleExpression 值是否有效?