Macos 用于启动另一个应用程序的应用程序的OSX LaunchAgent

Macos 用于启动另一个应用程序的应用程序的OSX LaunchAgent,macos,daemon,agent,launch-agent,launch-daemon,Macos,Daemon,Agent,Launch Agent,Launch Daemon,我正在尝试为cassandra设置本地LaunchAgent,但遇到了一个问题,因为bin/cassandra只是一个shell脚本,它启动: /usr/bin/java -ea -javaagent:blah blah blah blah blah blah blah 我的LaunchAgent启动脚本,但要么从不启动cassandra,要么不允许它生成子进程,或者,我不完全确定发生了什么,但似乎我以前遇到过这个问题。我所知道的使其工作的唯一方法是将我的LaunchAgent从以下位置更改为

我正在尝试为cassandra设置本地LaunchAgent,但遇到了一个问题,因为
bin/cassandra
只是一个shell脚本,它启动:

/usr/bin/java -ea -javaagent:blah blah blah blah blah blah blah
我的LaunchAgent启动脚本,但要么从不启动cassandra,要么不允许它生成子进程,或者,我不完全确定发生了什么,但似乎我以前遇到过这个问题。我所知道的使其工作的唯一方法是将我的LaunchAgent从以下位置更改为:

<?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.cassandra.agent</string>

    <key>RunAtLoad</key>
    <true/>

    <key>KeepAlive</key>
    <true/>

    <key>UserName</key>
    <string>root</string>

    <key>ProgramArguments</key>
    <array>
        <string>/path/to/cassandra/bin/cassandra</string>
    </array>

    <key>WorkingDirectory</key>
    <string>/path/to/cassandra/bin</string>
</dict>
</plist>

标签
com.cassandra.agent
运行负荷
持久连接
用户名
根
程序参数
/路径/to/cassandra/bin/cassandra
工作目录
/路径/to/cassandra/bin

。。。
程序参数
/usr/bin/java
-ea
-javaagent:blah
废话
废话
废话
废话
废话
废话

我想知道是否有人知道我如何从LaunchAgent中引用shell脚本,而不是从
ps aux

中提取所有参数。我对cassandra并不特别熟悉,但我猜它正在后台运行(即进入后台)。launchd不喜欢它的孩子们把自己妖魔化;然后,它希望留在前景中,以便能够密切关注它们。如果一个守护进程自己,launchd会认为它已经退出(从技术上讲,它已经退出),清理所有剩余的子进程(包括现在的守护进程),然后重新启动它。起泡,冲洗,重复

根据,您可以向cassandra传递
-f
标志,使其保持在前台,并保持启动愉快:

<key>ProgramArguments</key>
<array>
    <string>/opt/local/bin/cassandra</string>
    <string>-f</string>
</array>
编程参数
/opt/local/bin/cassandra
-f

您是否尝试过使用实际的shell二进制文件来预先编写shell脚本,以执行脚本,即/bin/sh?@tommyd-主意不错,但运气不好:(同样的事情——立即检查显示流程
/bin/sh/path/to/bin/cassandra
,但几毫秒后,流程就可以接受答案,+1表示从长远来看更有用的解释:)
<key>ProgramArguments</key>
<array>
    <string>/opt/local/bin/cassandra</string>
    <string>-f</string>
</array>