Linux 開機自啟動應用程式(進程)__Linux

來源:互聯網
上載者:User

言:任何事情都一樣,原理弄清楚了,所有的問題將變得不再神秘。

 

學電腦的人都知道,在任何同一時刻,電腦只能執行一條指令,而且都是順序往下執行的(除非遇到跳轉指令)。

Linux的進程啟動都是根據啟動指令碼裡的指令進行的,主要有兩類:init 和bash. init 是所有指令碼的最頂端,首先被執行,而bash一般是登陸shell 的時候才會被調用。

 

不同的檔案系統具體的啟動指令檔名稱是不一樣的。以我使用的檔案系統(yaffs)為例,/etc/init.d/rcS 作為init 的指令碼,如果你想開機時進入自己的應用程式,則在rcS裡面寫入就可以。比如我想啟動/usr/qtopia/chip  則在裡面寫入/usr/qtopia/chip –qws  就可以。

/etc/init.d/profile 作為bash 的指令碼 ,在這個指令碼裡的指令 開機時不會被執行,但是你進入shell 狀態時,就會被調用,一般來說bash 指令碼多數用來存放環境變數,記住,每一次進入shell 都會調用一次bash 指令碼。 

 

 

 

 

 

 

 

 

來看看我分析一個常式,在/usr/qtopia 裡有一個qt 程式,不採用自啟動的方式,而是利用終端輸入(進入終端就意味著進入shell)開啟,這時候沒問題,程式正常被開啟,這說明裡我的qt 庫lib 的環境變數設定沒問題。

但是當我採用自啟動的方式,即在/etc/init/rcS 裡加入/usr/qtopia/chip –qws 時卻提示 error while loading share qtlib.so.4 ````````為什麼呢。

原因是這樣的:我的環境變數放在/etc/profile 而程式執行指令放在/etc/init.d/rcS ,這裡就會出現一個問題,rcS 最先被執行 而profile 還沒被執行,這樣很明顯找不到lib 了嘛,回頭看終端輸入啟動,為什麼就找到lib 呢 。很簡單,你開啟終端時,bash 已經被調用。這樣,執行的順序變為首先執行/etc/profile 然後才執行你的指令。

 

 

註:ubuntu 系統的bash 指令碼是 ~/.bashrc 或者 /etc/bashrc

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.