(OSX)启动CTL不允许Python停止
我在Lion(10.7.3)上使用launchctl在系统启动时在2个不同端口上加载2个SickBeard实例(一个python脚本) 我在~/Library/LaunchAgents中的列表如下(OSX)启动CTL不允许Python停止,python,macos,osx-lion,launchd,Python,Macos,Osx Lion,Launchd,我在Lion(10.7.3)上使用launchctl在系统启动时在2个不同端口上加载2个SickBeard实例(一个python脚本) 我在~/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"&g
<?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>Label</key>
<string>com.sickbeard.sickbeard</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Frameworks/Python.framework/Versions/2.7/bin/python</string>
<string>/Users/james/Applications/Sick-Beard/SickBeard.py</string>
<string>-q</string>
<string>-d</string>
</array>
<key>StandardOutPath</key>
<string>/var/log/sickbeard/sickbeard.log</string>
<key>StandardErrorPath</key>
<string>/var/log/sickbeard/sickbeard_error.log</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我遇到的问题是,尽管“launchctl start com.sickbeard.sickbeard”可以启动该过程,但“launchctl stop com.sickbeard.sickbeard”并不能阻止它。
如果我尝试从GUI启动自动更新,则会失败,提示我查看日志。
日志在适当的时间戳包括以下内容
Mar-24 20:15:25 DEBUG CP Server Thread-4 :: After checking, cur_commit = a392367b16b197ca59a5017f5ecfb37ade2f26f4, newest_commit = a392367b16b197ca59a5017f5ecfb37ade2f26f4, num_commits_behind = 0
Mar-24 20:15:25 DEBUG CP Server Thread-4 :: newest: a392367b16b197ca59a5017f5ecfb37ade2f26f4 and current: a392367b16b197ca59a5017f5ecfb37ade2f26f4 and num_commits: 0
AA
Mar-24 20:15:22 DEBUG CP Server Thread-4 :: Git output: a392367b16b197ca59a5017f5ecfb37ade2f26f4
AA
Mar-24 20:15:22 DEBUG CP Server Thread-4 :: git output: a392367b16b197ca59a5017f5ecfb37ade2f26f4
Mar-24 20:15:22 DEBUG CP Server Thread-4 :: Executing "/usr/local/git/bin/git" rev-parse HEAD with your shell in /Users/james/Applications/Sick-Beard
Git确实位于/usr/local/bin/Git中。
奇怪的是,我不记得改变了任何可能导致这个问题的东西——以前有人遇到过这个问题吗?
我已经浏览了这些论坛上所有的launchctl线程,并尝试了对plists等的所有个性化小更改,但没有一个真正起到任何作用
在我未经训练的眼中,python似乎正在从父进程中妖魔化自己,因此当启动请求时停止它的权限就超出了它的权限
您的帮助和想法将不胜感激!
如果我错过了任何有用的进一步信息,请务必让我知道
:)这并不是完全的daemonization,但是标准python OS X框架构建中的
bin/python
可执行文件实际上是一个启动程序,它执行位于框架中应用程序包中的真正python可执行文件:
$ /usr/local/bin/python2.7 -c 'import sys; print(sys.executable)'
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
通过更改launchctl plist以直接执行该可执行文件,您可能可以获得所需的行为。感谢您的努力。我更改了两个plist,包括新的二进制文件、卸载、重新加载、停止和启动,但不幸的是python仍然没有停止。如果有帮助的话,活动监视器的前几行将指向python实例的下面几行/Users/james/Applications/Sick Beard/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/pythos/Library/Library/Frameworks/2.7/python2.7/lib-dynload/itertools.so抱歉,这没有帮助。通过快速查看代码的源代码,我看到了一些关于重新启动代码的引用。不知道这对launchd有多好。祝你好运
$ /usr/local/bin/python2.7 -c 'import sys; print(sys.executable)'
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python