2016-07-28 374 views
0

我一直試圖讓這個工作,但沒有任何成功。在啓動時運行shell腳本(OS X)

我有這個jar文件:/Users/ivanmorelos/Documents/guiprueba.jar

我也讓這款SH文件:

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

的路徑,這sh爲:/用戶/ ivanmorelos /文件/ guiprueba.sh

如果我運行從終端這個劇本就像

bash /Users/ivanmorelos/Documents/guiprueba.sh 

則jar完美執行。

現在我去/庫/ 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屬於根。

據我所知,這應該使我的jar在啓動時執行,因此,在登錄屏幕出現之前。我對麼?但是無論如何,什麼都不會發生,我不知道錯誤在哪裏。你可以幫我嗎?我真的很感激。

編輯

我在做劇本以下變化:

java -jar guiprueba.jar 

touch texto.txt 

創建一個簡單的文件,但它仍然沒有做到這一點。

+0

有兩個文件(守護程序和腳本)訪問權限'根:車輪644'?他們必須。腳本也應該位於主庫中。除非腳本使用運行循環,否則'keepAlive'鍵實際上不需要。 – vadian

+0

嗨@vadian,這兩個文件都有644個特權。主圖書館是什麼意思?我應該將腳本移動到/ Library /? – IvnBam

+0

更重要的是,所有者是「root」,組是「wheel」。是的,因爲守護程序在本地域中運行,所以將腳本移動到/ Library中可能位於「應用程序支持」的子文件夾中。 – vadian

回答

0

所以我終於找到了解決這個問題的方法。

我將我的jar放在/ Users/ivanmorelos/Documents /由root擁有:wheel。一個ls -l命令顯示了這一點:

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

然後動了我的plist到/ System /庫/ 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>