V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
korvin
V2EX  ›  macOS

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

  •  
  •   korvin · 2020-03-19 11:38:16 +08:00 · 3636 次点击
    这是一个创建于 1711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 的命令。

    16 条回复    2020-03-20 10:00:00 +08:00
    misaka19000
        1
    misaka19000  
       2020-03-19 11:40:49 +08:00
    把 python 修改为全限定路径再试一下呢
    korvin
        2
    korvin  
    OP
       2020-03-19 11:42:49 +08:00
    @misaka19000 #1 /usr/bin/python /Users/abc/Downloads/test.py 这样吗?也试过,一样无效。
    misaka19000
        3
    misaka19000  
       2020-03-19 11:46:09 +08:00
    把 Python 命令放在一个 shell 脚本里面执行,看看 shell 脚本能否正常执行(比如执行一个 echo ),再看下 Python 执行的输出结果是什么,是否有报错
    littleylv
        4
    littleylv  
       2020-03-19 11:48:32 +08:00
    首先看看 cron 的 log,有没执行到
    korvin
        5
    korvin  
    OP
       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
        6
    littleylv  
       2020-03-19 12:00:26 +08:00
    @korvin #5 不是,你尝试直接在命令行执行 python /Users/abc/Downloads/test.[防 v2 屏蔽 ]py 试试
    superrichman
        7
    superrichman  
       2020-03-19 12:12:42 +08:00 via iPhone
    可能是 cron 执行的时候没有环境变量 找不到 python ? 你把 python 路径写完整试试
    或者写进 shell 脚本
    korvin
        8
    korvin  
    OP
       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
        9
    lazydog  
       2020-03-19 12:17:17 +08:00 via Android
    似乎我也遇到了这个问题,更改 py 路径为相对和绝对都不行,后来就没然后了!😂
    korvin
        10
    korvin  
    OP
       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
        11
    korvin  
    OP
       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
        12
    cz5424  
       2020-03-19 12:33:38 +08:00
    记得 macos 的 Downloads 需要授权,你扔别的地方试试
    korvin
        13
    korvin  
    OP
       2020-03-19 13:06:37 +08:00
    @cz5424 #12 果然是,换目录可以了,我还以为 Downloads 是权限最不敏感的一个目录呢


    @lazydog #9
    @superrichman #7
    @littleylv #6
    @misaka19000 #3
    解决了,换目录
    lazydog
        14
    lazydog  
       2020-03-19 22:48:13 +08:00 via Android
    OK,我去试一试!感谢~
    kojirou
        15
    kojirou  
       2020-03-20 00:08:39 +08:00
    隐私设置里有一个完全磁盘访问权限,加个 python
    korvin
        16
    korvin  
    OP
       2020-03-20 10:00:00 +08:00
    @kojirou #15 网上查了查都是把终端加完全磁盘访问权限,没想到要加 python,之前已经换目录解决了,到时试试你这个方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:10 · PVG 23:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.