2012-05-25 66 views
2

應用我所創建的腳本文件 -的AutoLaunch在Ubuntu

#!/bin/sh 
echo "my application is here" 
./helloworld # helloworld is our application 
  1. 創建腳本文件,我複製它在init.d
  2. 我給了命令後chmod +x /etc/init.d/vcc_app(vcc_app是腳本的名稱,我已創建)
  3. 然後我發出命令ln -s /etc/init.d/vcc_app /etc/rc.d/vcc_app(rc.d是運行級目錄)

但是,當我重新啓動板,我的應用程序不會自動執行。誰能幫我嗎?

+0

你的問題是潛在的題外話這裏(因此)(請參閱[常見問題#問題])等,我投票給它進行遷移。我發佈了一個簡短的回答,以幫助您入門,但要做好準備,以便關閉/遷移。 –

+0

這是一個腳本如何編碼的問題(需要「開始/停止」),這使得它成爲一個編程問題。這個題目是怎麼回事? – delicateLatticeworkFever

+0

@goldilocks這是一個非常有效的shell腳本,在編程方面。但是,操作系統的規格正在阻止它按需執行。這個問題很可能會改寫爲*「如何在XYZ版本的Ubuntu中自動執行腳本啓動?」*。恕我直言,這是題外話。 –

回答

1

的腳本,在/etc/init.d必須LSB-compliant

如果你只是想在引導過程結束時自動運行命令,嘗試將它們放置在/etc/rc.local代替。

+0

沒有rc。本地在我的rfs – user1415119

+0

我不認爲任何(或許多)發行版都強制執行「LSB合規性」,因爲它們往往有自己的初始化守護進程特定方案,但這是一般想法。 @ user1415119:ubuntu's ** upstart ** init守護進程默認情況下可能不會使用rc.local,但如果您創建一個,它應該尊重它 - 或者您可以開始閱讀http://upstart.ubuntu.com/cookbook/ – delicateLatticeworkFever

1

並非所有的Linux系統使用相同的init守護進程(Ubuntu使用暴發戶:http://upstart.ubuntu.com/getting-started.html),但它們都使用startstop功能的腳本。其他常見的功能是statusrestart,但同樣,有一刀切的標準沒有真正的。例如:

!#/bin/sh 

start() { 
    echo "application started"; 
    ./helloworld # you should use an absolute path here instead of ./ 
} 

stop() { 

} 

case "$1" in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    *) 
     echo "Usage start|stop"; 
esac 

exit $? 

的最後一位是基於第一個命令行參數開關,因爲init將調用腳本myrcscript start

爲了使用stop()(和也經常有用restart()),你需要保持,或者能夠得到,通過start()推出進程的PID;有時這是在/ tmp目錄有點「pid文件」完成(含PID文本文件,如/tmp/myscript.pid在開始創建())。

的「暴發戶」的init在Ubuntu上使用的守護進程都有自己特定的功能,但除非你需要使用它們,只是不停地啓動/停止最小的,它會(可能)在任何地方工作。

+0

+ 1爲你付出這個答案的努力量。 –