升级Mac OS后,如何恢复Python cron作业?

2024-04-20 03:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近升级到MacBigSur,并注意到我的Python 3.8 cron作业已停止工作。在我自己的bash shell帐户下,我可以毫无问题地运行它

davea$ cd /Users/davea/Documents/workspace/article_project; source ./venv/bin/activate; python3 manage.py check_duplicates 

在我的crontab中,我有这样的设置,它在升级之前就可以工作了

*/5 * * * * /bin/bash -l -c 'cd /Users/davea/Documents/workspace/article_project; source ./venv/bin/activate; python manage.py check_duplicates >> /Users/davea/logs/record2.txt 2>&1'

但是,升级后,我注意到我的命令从未运行过,我在日志文件中看到了这个问题

/Library/Frameworks/Python.framework/Versions/3.8/bin/python3: can't open file 'manage.py': [Errno 1] Operation not permitted

这些是我的“manage.py”文件上的权限/组

davea$ ls -al manage.py 
-rwxrwxr-x 1 davea staff 866 Apr 15  2019 manage.py

我还需要做什么才能使cron作业再次运行


Tags: pyprojectbashsourcebinmanagevenv作业
3条回答

事实证明,在新的Mac OS中,需要启用额外级别的权限。在“系统首选项”中的“安全和隐私”下,我单击了“隐私”选项卡,然后将“cron”添加到“完整磁盘访问”列表中

enter image description here

然后,cron作业在没有权限错误的情况下运行

这看起来像是SIP或其他特定于mac的访问权限错误,尤其是在升级之后。可以是:https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/

我在使用cron处理venvs时也遇到了很多问题,可能与此有关:https://stackoverflow.com/a/7031758/13113166

同样奇怪的是,错误来自/Library/Frameworks/Python.framework/Versions/3.8/bin/python3,而我认为如果正确激活,它应该来自您的venv

我认为在这种情况下,python3被认为是“任何用户”,并且具有-rwxrwxr权限,它只拥有读取文件的权限,尝试运行文件夹中的chmod 775 manage.py,向manage.py添加由“任何用户”执行的权限(rigths应该设置为-rwxrwxr),希望它能有所帮助。 编辑:从技术上讲,读取权限应该足以让python运行一个文件,但我看不出出现此错误的另一个原因,如果您找到一个原因,我会很感兴趣

相关问题 更多 >