在引导时运行shell脚本(OS X)

时间:2016-07-28 16:54:16

标签: macos sh osx-mavericks boot launchd

我一直试图让它发挥作用,但没有取得任何成功。

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

我也做了这个sh文件:

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

这条路的路径是:/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

创建一个简单的文件,但它仍然没有。

1 个答案:

答案 0 :(得分:1)

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

我将我的jar放在/ 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在启动时执行。

这是最后的帖子:

<?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>