为什么 macOS 里的 crontab 里添加了 Python 的定时任务不运行

2020-03-19 11:38:16 +08:00
 korvin
crontab -l
* * * * * python /Users/abc/Downloads/test.py
* * * * * say hello

/Users/abc/Downloads/test.py

#!/usr/bin/python

file = open('/Users/abc/Downloads/abc.txt','w')
file.write('aaaaaa')
file.close()

say hello 每分钟都能运行,但 python 的那行命令效果,换一台 mac 也试过一样无效,这个 python 脚本是我写着测试定时任务的,原先是在 python 脚本里写的的是请求 api 运行 shell 的命令。

3634 次点击
所在节点    macOS
16 条回复
misaka19000
2020-03-19 11:40:49 +08:00
把 python 修改为全限定路径再试一下呢
korvin
2020-03-19 11:42:49 +08:00
@misaka19000 #1 /usr/bin/python /Users/abc/Downloads/test.py 这样吗?也试过,一样无效。
misaka19000
2020-03-19 11:46:09 +08:00
把 Python 命令放在一个 shell 脚本里面执行,看看 shell 脚本能否正常执行(比如执行一个 echo ),再看下 Python 执行的输出结果是什么,是否有报错
littleylv
2020-03-19 11:48:32 +08:00
首先看看 cron 的 log,有没执行到
korvin
2020-03-19 11:59:11 +08:00
@misaka19000 #3
试过这样也不行

backup.sh
```
python /Users/abc/Downloads/test.[防 v2 屏蔽 ]py
```
crontab -l

* * * * * /Users/abc/Downloads/backup.sh
* * * * * say hello
littleylv
2020-03-19 12:00:26 +08:00
@korvin #5 不是,你尝试直接在命令行执行 python /Users/abc/Downloads/test.[防 v2 屏蔽 ]py 试试
superrichman
2020-03-19 12:12:42 +08:00
可能是 cron 执行的时候没有环境变量 找不到 python ? 你把 python 路径写完整试试
或者写进 shell 脚本
korvin
2020-03-19 12:17:12 +08:00
@littleylv #6 直接在终端运行这个是可以的,刚刚加日志输出

crontab -l
* * * * * python /Users/abc/Downloads/abc.py >> /Users/abc/Downloads/log.log 2>&1

看到报错了
cat log.log

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/Users/abc/Downloads/abc.py': [Errno 1] Operation not permitted

修改文件权限 777 和脚本目录 777 还是不行
lazydog
2020-03-19 12:17:17 +08:00
似乎我也遇到了这个问题,更改 py 路径为相对和绝对都不行,后来就没然后了!😂
korvin
2020-03-19 12:18:53 +08:00
@superrichman #7 找到报错信息了,不是 python 找不到,是操作不被允许,还没找到解决办法
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/Users/abc/Downloads/abc[防屏蔽].py': [Errno 1] Operation not permitted
korvin
2020-03-19 12:21:36 +08:00
@lazydog #9 找到报错了,但还没解决
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/Users/abc/Downloads/abc[防屏蔽].py': [Errno 1] Operation not permitted
cz5424
2020-03-19 12:33:38 +08:00
记得 macos 的 Downloads 需要授权,你扔别的地方试试
korvin
2020-03-19 13:06:37 +08:00
@cz5424 #12 果然是,换目录可以了,我还以为 Downloads 是权限最不敏感的一个目录呢


@lazydog #9
@superrichman #7
@littleylv #6
@misaka19000 #3
解决了,换目录
lazydog
2020-03-19 22:48:13 +08:00
OK,我去试一试!感谢~
kojirou
2020-03-20 00:08:39 +08:00
隐私设置里有一个完全磁盘访问权限,加个 python
korvin
2020-03-20 10:00:00 +08:00
@kojirou #15 网上查了查都是把终端加完全磁盘访问权限,没想到要加 python,之前已经换目录解决了,到时试试你这个方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654177

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX