将OSX plist加载到带有python子进程的启动守护程序

2024-04-29 05:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python安装一个OSX LaunchDaemon,但是使用子流程.Popen实际上没有安装服务。在

plist文件位于/Library/LaunchDaemons/中,可以使用终端加载plist文件:

$launchctl加载-w/Library/LaunchDaemons/com.myplist.file文件.plist公司

$启动CTL启动com.myplist.file文件在

$启动CTL列表

“-0”com.myplist.file文件““

服务通过命令行正确加载和启动,这意味着我的plist文件设置正确,但是当我用python执行相同的命令时,问题就开始了子流程.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,但没有成功。对此有什么想法吗?在


Tags: 文件the命令comservicelibrary流程command
1条回答
网友
1楼 · 发布于 2024-04-29 05:19:28

我知道了!谢谢你的帮助,赛尔夫。不客气,赛尔夫!在

任何想通过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)

启动服务

^{pr2}$

相关问题 更多 >