Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OS X 10.10.3启动CTL权限被拒绝_Python_Macos_Shell_Launchctl - Fatal编程技术网

Python OS X 10.10.3启动CTL权限被拒绝

Python OS X 10.10.3启动CTL权限被拒绝,python,macos,shell,launchctl,Python,Macos,Shell,Launchctl,我执行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-0

我执行
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'
<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>
auto.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已选择777

PS:I direct execution auto.sh没有任何错误。

即使是OSX上特定于用户的
launchd
job也会以
/
作为当前目录执行。

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

因此,要么更改当前用户可以在其中创建文件的目录,要么指定显式路径;e、 g.(假设导入操作系统):


至于如何直接运行
python
脚本,而不需要中间shell脚本:

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

编程参数
python
/用户/xxxx/Downloads/Kevin/auto.py
请注意,您不需要为
python
指定路径,因为当
launchd
运行作业时,它位于
$path

但是,请注意,
$PATH
包含的条目比您在
终端中看到的条目要少,其中一个明显的缺失是
/user/local/bin
;该值为(自OSX 10.10.3起):


我添加这个答案是为了提高可视性,尽管这并不是问题的根源


由于macOS 10.14 Mojave
launchd
中的更改,命令现在有了更多的安全限制。如果您看到用户拥有的文件和目录出现
权限被拒绝
错误,请参阅查找可能的修复方法。

看起来您必须使用
sudo运行,因为它没有该文件或目录的权限。如何启动ctl execut python?
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()
file_name = os.getenv('HOME') + '/' + time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
/usr/bin:/bin:/usr/sbin:/sbin