我已尝试设置ActiveMQ
守护程序但到目前为止一直未成功。我似乎无法加载ActiveMQ
。不知道我还能做些什么来完成这项工作?我可以通过运行命令ActiveMQ
/Library/ActiveMQ/bin/macosx/activemq start
在plist中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.apache.activemq</string>
<key>ProgramArguments</key>
<array>
<string>/Library/ActiveMQ/bin/macosx/activemq</string>
<string>start</string>
<string>;</string>
<string>--stop-cmd</string>
<string>/Library/ActiveMQ/bin/macosx/activemq</string>
<string>stop</string>
<string>;</string>
<string>--restart-cmd</string>
<string>/Library/ActiveMQ/bin/macosx/activemq</string>
<string>restart</string>
<string>;</string>
<string>--pid=none</string>
</array>
<key>WorkingDirectory</key>
<string>/Library/ActiveMQ</string>
<key>ServiceDescription</key>
<string>ActiveMQ</string>
<key>StandardErrorPath</key>
<string>/var/log/activemq.stderr</string>
<key>StandardOutPath</key>
<string>/var/log/activemq.stdout</string>
</dict>
</plist>
执行launchctl
命令的结果
macosx user$ sudo launchctl load -w /Library/LaunchDaemons/activemq.plist
com.apache.activemq: Already loaded
答案 0 :(得分:2)
您的.plist文件在几个方面看起来有误,这可能至少导致部分问题。首先,ProgramArguments中似乎有很多不相关的垃圾(可能是使用daemond的剩余物?)通常,ProgramArguments的第一个参数应该是你想要执行的程序的路径,其余的应该是它的参数。在我看来,这就是你应该拥有的一切:
<key>ProgramArguments</key>
<array>
<string>/Library/ActiveMQ/bin/macosx/activemq</string>
<string>start</string>
</array>
其次,“开始”参数让我觉得这不是实际的守护程序,而是一个在后台启动守护程序然后退出的管理脚本。当你手动运行/Library/ActiveMQ/bin/macosx/activemq start
时,它会退出(即给你一个新的shell提示符)并让守护进程在后台运行吗? launchd不期望它,它希望直接运行守护进程,以便它可以监视它,例如必要时重新启动它。这是告诉launchd运行启动脚本而不是实际守护程序的典型顺序:
......毋庸置疑,这种方法效果不佳。如果发生这种或类似情况,您有两种方法可以解决它:
KeepAlive
更改为false,然后添加<key>AbandonProcessGroup</key><true/>
答案 1 :(得分:1)
在终端
上运行以下命令 sudo launchctl unload /Library/LaunchDaemons/activemq.plist
或
sudo launchctl remove com.apache.activemq
然后
sudo launchctl load -w /Library/LaunchDaemons/activemq.plist
答案 2 :(得分:0)
我遵循了@Gordon Davisson的想法
但是我打电话给 activemq控制台而不是 activemq start 它现在正在运作。
这里是完整的plist文件:
<?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>/usr/local/Cellar/activemq/5.13.2/bin/activemq</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/Cellar/activemq/5.13.2/bin/activemq</string>
<string>console</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>WorkingDirectory</key>
<string>/usr/local/Cellar/activemq/5.13.2/libexec/data</string>
</dict>
</plist>