gpt4 book ai didi

Python 子进程在 launchd 运行时不起作用

转载 作者:行者123 更新时间:2023-11-28 18:43:40 27 4
gpt4 key购买 nike

我有一个 Python 脚本,它使用 subprocess 来运行一个 AppleScript 来改变我的桌面背景。 launchd 会定期调用 bash 脚本来运行 Python 脚本。

当我从命令行运行 bash 脚本时,它工作正常,但问题是当 launchd 以完全相同的方式调用 bash 脚本时,AppleScript 似乎不起作用(我已经调试它直到这个点,子流程调用之前的一切都正常)。我猜这是一个权限问题,但 launchd 似乎正在像我一样运行脚本。我什至试过让它以 root 身份运行,但它仍然不起作用。将其作为守护进程和用户管理员 (/Library/LaunchAgents) 运行也不起作用。

这是我的 plist 文件:

<?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>Disabled</key>
<false/>
<key>Label</key>
<string>com.foo.background.change</string>
<key>Nice</key>
<integer>-15</integer>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/Users/scott/Projects/Background/env/bin/Background/change_background.sh</string>
</array>
<key>ServiceDescription</key>
<string>Runs a script to change the desktop background image.</string>
<key>ServiceIPC</key>
<false/>
<key>StartInterval</key>
<integer>60</integer>
<key>UserName</key>
<string>scott</string>
</dict>
</plist>

感谢任何帮助!

编辑:感谢您的回复!这是 python 脚本。 set_desktop_background 从另一个确定要使用哪个图像的方法调用。始终使用完整的图像路径。

import subprocess

SCRIPT = """/usr/bin/osascript<<END
tell application "Finder"
set desktop picture to POSIX file "%s"
end tell
END"""

def set_desktop_background(filepath):
subprocess.Popen(SCRIPT%filepath, shell=True)

最佳答案

终于明白了。在我编写此脚本的某个时候,我在 OSX 的系统偏好设置中启用了“更改图片:每天”功能(我想看看是否可以找到用于此过程的 plist)。一旦我终于意识到这一点并禁用它,launchd 就能够通过我的脚本更改背景。

我仍然不确定为什么会发生这种情况,因为我可以在手动运行脚本时更改背景,但是哦,好吧。

感谢您的帮助!

关于Python 子进程在 launchd 运行时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23049799/

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