运行 shell 启动时的脚本 (OS X)

Run shell script at boot time (OS X)

我一直在努力让它工作,但没有成功。

我有这个 jar 文件:/Users/ivanmorelos/Documents/guiprueba.jar

我也做了这个sh文件:

#!/bin/bash
java -jar guiprueba.jar

这个sh的路径是:/Users/ivanmorelos/Documents/guiprueba.sh

如果我 运行 来自终端的这个脚本喜欢

bash /Users/ivanmorelos/Documents/guiprueba.sh

然后 jar 完美执行。

现在我去了 /Library/LaunchDaemons/ 并做了以下 com.ivan.gui.plist:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple$
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ivan.gui</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/ivanmorelos/Documents/guiprueba.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

*我制作了 sh 可执行文件,它属于 ivanmorelos,jar 文件也是。

*plist 属于 root。

据我所知,这应该使我的 jar 在启动时执行,因此,在登录屏幕出现之前。我对么?但是无论如何什么都没有发生,我不知道错误在哪里。请你帮助我好吗?非常感谢。

编辑

我在脚本中做了以下更改:

java -jar guiprueba.jar

touch texto.txt

创建一个简单的文件,但还是不行。

所以我终于找到了解决这个问题的方法。

我把罐子留在 /Users/ivanmorelos/Documents/ 属于 root:wheel。 ls -l 显示:

-rw-r--r--  1 root  wheel  2365 Jul 29 11:27 guiprueba.jar

然后使用以下权限将我的 plist 移动到 /System/Library/LaunchDaemons/:

-rw-r--r--  1 root  wheel  372 Jul 29 12:49 com.ivan.plist

还将我的脚本移动到 /usr/sbin/ 并具有以下权限:

-rwxr-xr-x  1 root  wheel  129 Jul 29 13:07 /usr/sbin/guiprueba

正如 ls -l 所示,我删除了 .sh

就是这样。现在我的脚本和 jar 在启动时执行。

这是最终的 plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.ivan</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/sbin/guiprueba</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>