Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 启动代理未启动_Macos_Launchd_Launch Agent - Fatal编程技术网

Macos 启动代理未启动

Macos 启动代理未启动,macos,launchd,launch-agent,Macos,Launchd,Launch Agent,我想做一个启动的启动代理。它应该在有网络连接的情况下运行,但它不会这样做启动CTL列表显示已加载: launchctl list | grep test.Flopsey.DiscordMusicBot - 0 test.Flopsey.DiscordMusicBot 当我用launchctl start test.Flopsey.DiscordMusicBot启动它时,它工作正常。.plist文件(存储在~/Library/LaunchAgents下)如下所示: 标签 test.F

我想做一个启动的启动代理。它应该在有网络连接的情况下运行,但它不会这样做<代码>启动CTL列表显示已加载:

launchctl list | grep test.Flopsey.DiscordMusicBot
-   0   test.Flopsey.DiscordMusicBot
当我用
launchctl start test.Flopsey.DiscordMusicBot启动它时,它工作正常。.plist文件(存储在~/Library/LaunchAgents下)如下所示:


标签
test.Flopsey.DiscordMusicBot
程序参数
. 我认为我的问题的解决方案是非常基本的,但我不知道它可能是什么。我还做了另一个类似的代理,它工作得很好(与音乐机器人不同,它只有一个文件)

更新
多亏了他的评论,我意识到在OSX10.10及更高版本上使用
NetworkState
不再有效。由于脚本在无法连接到Internet时退出,我可以将
KeepAlive
设置为
,并设置
ThrottleInterval
,因此如果无法连接,launchd会在冷却后重新启动脚本。

您的launchagent中是否有任何日志记录?可能您的launchagent确实开始运行,但在网络完全设置并准备就绪,然后您的agent退出之前。查看代理是否在启动/登录时触发可能很有用。您使用哪个版本的OSX?您所参考的教程指出,OSX 10.10中已经放弃了对NetworkState的支持。如果您使用LaunchControl(该站点上升级的launchd GUI)检查代理,您也会收到警告。@MichaelDautermann日志中没有任何内容,但Python应该打印启动消息和/或连接错误,因此我认为它不会运行。但是,即使它无法连接,它也应该重试或抛出错误并退出(我不确定确切的行为是什么,因为脚本不是由我创建的),并且launchd会因为
KeepAlive
键而重新启动它。@LCC哦,我没有看到,谢谢。在Sierra(10.12.4)中,当存在网络连接时,是否有其他方法启动代理,或者我必须自己启动代理?@FlopseyFlow这听起来是检查网络更改的合理方法:每次检测到此类更改时,都应该启动脚本。由脚本确定网络连接是否可用。是否在launchagent中有任何日志记录?可能您的launchagent确实开始运行,但在网络完全设置并准备就绪,然后您的agent退出之前。查看代理是否在启动/登录时触发可能很有用。您使用哪个版本的OSX?您所参考的教程指出,OSX 10.10中已经放弃了对NetworkState的支持。如果您使用LaunchControl(该站点上升级的launchd GUI)检查代理,您也会收到警告。@MichaelDautermann日志中没有任何内容,但Python应该打印启动消息和/或连接错误,因此我认为它不会运行。但是,即使它无法连接,它也应该重试或抛出错误并退出(我不确定确切的行为是什么,因为脚本不是由我创建的),并且launchd会因为
KeepAlive
键而重新启动它。@LCC哦,我没有看到,谢谢。在Sierra(10.12.4)中,当存在网络连接时,是否有其他方法启动代理,或者我必须自己启动代理?@FlopseyFlow这听起来是检查网络更改的合理方法:每次检测到此类更改时,都应该启动脚本。由脚本确定网络连接是否可用。
<?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>test.Flopsey.DiscordMusicBot</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5</string>
        <string>/path/to/MusicBot/run.py</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/bin:/usr/bin:/usr/local/bin</string>
    </dict>
    <key>StandardOutPath</key>
    <string>/path/to/MusicBot/log.log</string>
    <key>StandardErrorPath</key>
    <string>/path/to/MusicBot/log.log</string>
    <key>WorkingDirectory</key>
    <string>/path/to/MusicBot</string>
    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>
</dict>
</plist>