我有一個Java應用程序需要實現啓動時啓動JAR啓動的安裝功能。UNIX平臺上的系統啓動文件夾/方法?
我可以通過在註冊表中輸入一個REG文件來做到這一點,但我怎麼能在UNIX平臺上做到這一點? Linux和Mac如果方法不同。
Linux和Mac有系統啓動文件夾嗎?
請記住,我需要以編程方式執行此操作,而不是通過系統首選項或類似的東西。
我有一個Java應用程序需要實現啓動時啓動JAR啓動的安裝功能。UNIX平臺上的系統啓動文件夾/方法?
我可以通過在註冊表中輸入一個REG文件來做到這一點,但我怎麼能在UNIX平臺上做到這一點? Linux和Mac如果方法不同。
Linux和Mac有系統啓動文件夾嗎?
請記住,我需要以編程方式執行此操作,而不是通過系統首選項或類似的東西。
在Linux上,經典的方法是在相應的/etc/rcN.d/
目錄(其中N是代表'運行級別'的數字0-6)中添加腳本。我不確定這是否仍然是推薦的方式,但它通常仍然受支持。這也適用於其他主流Unix變種(Solaris,HP-UX,AIX)的微小變化。
在Mac上,你必須更加努力地工作。文件/etc/rc.common
,/etc/rc.imaging
和/etc/rc.netboot
是相關的,但沒有/etc/rcN.d
目錄。還有一個腳本rc
和另一個rc.local
。鍵入man rc
揭示:
說明
rc.local
現在不受支持,已被替換爲的launchd(8),其經由所述launchctl(1)自舉子命令引導自身中的launchd讀取(8)從所述作業標準地點。另請參閱
launchd(8), launchctl(1)
所以,你應該調查launchctl
和launchd
,特別launchctl
。
那些(launchctl,launchd,rc.common,...)文件或目錄? – bgroenks 2012-02-21 20:00:16
'launchctl'和'launchd'是程序(參見'man launchctl'和'man launchd') - 啓動守護程序及其控制程序。 'rc.common'等是我的Mac上的'/ etc /'中的文件或腳本,它已經從早期版本的Mac OS X升級,所以它可能是一個結轉,但它可能是一個文件,清理新的Lion安裝。 – 2012-02-21 20:13:03
在Mac上我認爲它的launchd
,在linux上它的init.d
。他們是配置文件。
這就是我將如何在Ubuntu上做到這一點。
首先創建一個bash腳本來運行java應用程序,類似於。
#!/bin/bash
java -jar "helloworld.jar"
並保存它,在這種情況下,在/etc/init.d中稱爲'HELLOWORLD'。
需要使腳本可執行所以需要運行
chmod +x HELLOWORLD
最後,使其運行在啓動時
update-rc.d HELLOWORLD defaults
是/etc/init.d目錄嗎? – bgroenks 2012-02-21 20:00:44
你有什麼打算你的程序在啓動時怎麼辦? – Gabe 2012-02-21 04:32:01
@Gabe註冊一個SystemTray圖標並檢查下一個任務何時運行。然後它會休眠一段時間,稍後再檢查更新。我很努力地設計它是低成本的資源明智的。這對Java很難。我喜歡Java,但長時間運行的後臺任務並不在它發光的地方。我想製作一個C應用程序來完成這一部分......但這隻能在Windows上運行,而且我無法弄清楚如何製作托盤圖標。 – bgroenks 2012-02-21 20:01:46