运行 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>
我一直在努力让它工作,但没有成功。
我有这个 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>