gpt4 book ai didi

python - 使用 python 子进程将 OSX plist 加载到 LaunchDaemons

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:05 26 4
gpt4 key购买 nike

我正在尝试使用 python 安装 OSX LaunchDaemon,但使用 subprocess.Popen 调用 launchctl 实际上并未安装该服务。

我在/Library/LaunchDaemons/中有 plist 文件,我可以使用终端加载 plist 文件:

$ launchctl load -w/Library/LaunchDaemons/com.myplist.file.plist

$ launchctl start com.myplist.file

$ launchctl 列表

“- 0 com.myplist.file”

该服务通过命令行正确加载并启动,这意味着我的 plist 文件已正确设置,但是当我使用 python subprocess.Popen 或任何 python 系统调用命令执行相同的命令时,问题就开始了。

            # Load the service
command = shlex.split("launchctl load -w /Library/LaunchDaemons/com.myplist.file.plist")
subprocess.Popen(command)
# Start the service
command = shlex.split("launchctl start com.myplist.file")
subprocess.Popen(command)

我也尝试过设置 shell=True 但没有成功。对此有什么想法或想法吗?

最佳答案

我已经明白了!谢谢你的帮助, self 。哦,不客气,你自己!

任何想要通过 python 安装 OSX 服务的人都会发现这很有用。

加载服务

servicePath = '/Library/LaunchDaemons/com.myplist.file.plist'

launchctlCmd = ['/bin/launchctl', 'load', '-w', servicePath]
# Execute service load command
proc = subprocess.Popen(launchctlCmd, shell=False, bufsize=1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

启动服务

serviceName = 'com.myplist.file'

launchctlCmd = ['/bin/launchctl', 'start', serviceName]
# Execute service start command
proc = subprocess.Popen(launchctlCmd, shell=False, bufsize=-1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

关于python - 使用 python 子进程将 OSX plist 加载到 LaunchDaemons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118025/

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