歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 開機自啟動應用程序(進程)

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

日期:2017/2/28 16:44:24   编辑:Linux教程

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

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

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

Copyright © Linux教程網 All Rights Reserved