gpt4 book ai didi

python - OS X 10.10.3 launchctl 权限被拒绝

转载 作者:太空宇宙 更新时间:2023-11-03 14:19:21 24 4
gpt4 key购买 nike

我执行launchctl start com.xxx.xxx.plist

我可以找到 AutoMakeLog.err 和内容:

Traceback (most recent call last):
File "/Users/xxxx/Downloads/Kevin/auto.py", line 67, in <module>
output = open(file_name, 'w')
IOError: [Errno 13] Permission denied: '2015-04-22-09:15:40.log'

plist 内容:

<array>
<string>/Users/xxxx/Downloads/Kevin/auto.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>30</integer>
<key>Hour</key>
<integer>08</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/xxxx/Downloads/Kevin/AutoMakeLog.log</string>
<key>StandardErrorPath</key>
<string>/Users/xxx/Downloads/Kevin/AutoMakeLog.err</string>

自动.sh

#!/bin/sh
/usr/bin/python /Users/xxxx/Downloads/Kevin/auto.py

自动.py

file_name = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
file_name += '.log'
output = open(file_name, 'w')
output.writelines(response.text)
output.close()

auto.sh 和 auto.py 有 chomd 777

PS:我直接执行auto.sh没有报错。

最佳答案

甚至用户特定 launchd OSX 上的作业 / 执行作为当前目录。

auto.py正在创建一个只有文件名,没有路径的文件,它实际上试图在 / 中创建一个文件并因权限不足而失败。

因此,要么更改为当前用户可以在其中创建文件的目录,要么指定一个显式路径;例如(假设 import os ):

file_name = os.getenv('HOME') + '/' + time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))

至于如何运行您的python 直接编写脚本,无需中间 shell 脚本:

在您的 plist 文件中,指定要执行的命令如下:

  <key>ProgramArguments</key>
<array>
<string>python</string>
<string>/Users/xxxx/Downloads/Kevin/auto.py</string>
</array>

请注意,您无需为 python 指定路径,因为它在 $PATH 中什么时候launchd运行你的工作。

但是,请注意 $PATH包含的条目比您在 Terminal 中看到的要少 ,一个值得注意的缺失/user/local/bin ;该值为(从 OSX 10.10.3 开始):

/usr/bin:/bin:/usr/sbin:/sbin

关于python - OS X 10.10.3 launchctl 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com