gpt4 book ai didi

python - LaunchAgent 脚本无法写入外部驱动器

转载 作者:行者123 更新时间:2023-12-01 07:00:08 26 4
gpt4 key购买 nike

macOS Catalina

我有一个 python 脚本,应该将文件写入外部驱动器。如果我手动运行脚本,这会起作用。但是,如果该脚本是从 LaunchAgent bash 脚本启动的,则它无权执行此操作。

简化的 python 脚本作为示例:

with open('/Volumes/nas_1/test/somefile.txt', 'a') as the_file:
the_file.write('Hello\n')

LaunchAgent 启动的 Bash 脚本位于 /Applications:

#!/bin/bash

#Start test script only if it is not running
if [ "$(ps -ef | grep -v grep | grep python_test.py | wc -l)" -le 0 ]
then

echo "Python Test Starting"
/Users/admin-user/.venvs/test/bin/python /Users/admin-user/projects/test/scripts/python_test.py

else
echo "Python Test Already Running"
fi

plist位于~/Library/LaunchAgents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
</dict>
<key>Label</key>
<string>com.test.agent</string>
<key>Program</key>
<string>/Applications/runTest.sh</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>LaunchOnlyOnce</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/runTest.stdout</string>
<key>StandardErrorPath</key>
<string>/tmp/runTest.stderr</string>
</dict>
</plist>

错误:

PermissionError: [Errno 1] Operation not permitted: '/Volumes/nas_1/test/somefile.txt'

我在调试时授予了 /Volumes/nas_1/test 777 权限,但这没有帮助。我应该将 bash 和/或 python 脚本移到其他地方吗?

最佳答案

我也遇到过类似的问题。升级到 Catalina 后,通过 rsync 将文件复制到外部驱动器的 bash 脚本无法运行。

以下是我为使其再次正常工作所做的操作:

  • 系统偏好设置/安全和隐私/完整磁盘访问中添加/bin/bash
  • >
  • 将 bash 脚本中的 shebang 替换为 /bin/bash(原为 /usr/bin/env bash)
  • 从我的 plist 中删除 StandardErrorPathStandardOutPath 条目(写入日志文件被拒绝,因为它是作为另一个进程生成的)

之后它又开始工作了,也许还有更好的解决方案。

关于python - LaunchAgent 脚本无法写入外部驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677123/

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