我想添加一个运行Python文件的LaunchDaemon。有一个简单的方法吗?
答案 0 :(得分:2)
显式启动python解释器:
<?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>RunAtLoad</key>
<true/>
<key>Label</key>
<string>tld.yourdomain.YourService</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>/path/to/your/script.py</script>
</array>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
chmod +x /path/to/your/script.py
)#!/usr/bin/python
或#!/usr/bin/env python
)然后直接运行您的脚本
<?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>RunAtLoad</key>
<true/>
<key>Label</key>
<string>tld.yourdomain.YourService</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script.py</script>
</array>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
我应该说RunAtLoad = true
不是推荐的工作方式。真的只有在没有别的办法的情况下才能这样做。如果您想手动运行它,只需将其删除并执行launchctl start tld.yourdomain.YourService
。要加载服务launchctl load /path/to/the/plist.plist
或将其粘贴到/Library/LaunchAgents
,/Library/LaunchDaemons
或~/Library/LaunchAgents
。
而且:UserName = root
只有在它是LaunchDaemon的情况下才有可能。如果您不需要,请将其删除并使其成为LaunchAgent(一个实例每个用户而不是整个系统的实例)。