Mac - 启动时运行 Java 程序

Mac - 启动时运行 Java 程序

我想在计算机启动时启动一个 java 程序(服务器程序)。我可以从命令行完美地运行它。

我创建了/Library/Server/startFS.sh。该文件可由 root 执行,包含:

cd /Library/Server/FiloSync
/usr/bin/java -jar /Library/Server/FiloSync/filosync-server-latest.jar -p 7000 -s 7001

我无法将其launchd .plist包含在这里,格式全部关闭。

我可以从命令行正常运行它:./startFS.sh,但是当我创建 plist(通过 Lingon)时,什么也没有发生。

现在,运行时,它会向控制台输出几行。这可能是问题吗?

我尝试过添加前缀nohup和后缀&,但似乎没有任何组合可行。

答案1

将这样的属性列表保存为 /Library/LaunchAgents/some.label.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>some.label</string>
  <key>ProgramArguments</key>
  <array>
    <string>java</string>
    <string>-jar</string>
    <string>/Library/Server/FiloSync/filosync-server-latest.jar</string>
    <string>-p</string>
    <string>7000</string>
    <string>-s</string>
    <string>7001</string>
  </array>
  <key>RunAtLoad</key>
  <true/> <!-- run the program at login -->
  <key>KeepAlive</key>
  <true/> <!-- run the program again if it terminates -->
  <key>WorkingDirectory</key>
  <string>/Library/Server/FiloSync</string>
</dict>
</plist>

确保该文件由 root 拥有。如果不是,则可以在不使用 sudo 的情况下加载该文件,但不会在登录时自动加载。然后注销并重新登录以测试程序是否已启动。

有关详细信息,请man launchd.plist参阅守护进程和代理技术说明,或http://osxnotes.net/launchd.html

相关内容