linux 把可執行程式做成乙個服務

2021-05-27 09:28:19 字數 1942 閱讀 4959

linux_把可執行程式做成乙個服務

把可執行程式做成乙個服務

在linux系統啟動的時候,我們可以看到很多服務性程式乙個接乙個的被啟動(就是那些後面有乙個蘭色[ok]的行),這些在後台執行的程式為我們使用計算機起了很重要的作用,以這種方式執行的程式有以下特點:

開機啟動,關機停止(廢話!關機了還執行啊???)

後台執行

通過service 命令控制或檢視對應的程式的執行狀態

恩,不錯,那怎麼把我們自己編制的程式做成這樣的乙個服務呢?

廢話少說,主要分以下3步:

1、把可執行程式放到乙個linux系統可以找到的地方。

在linux命令提示符下輸入 env ,回車後可看到環境變數,裡面有一項path的,對,這項裡所指定的目錄都是系統可找到的地方,把我們的可執行程式放入其中的乙個目錄下即可,我們一般放在/usr/sbin/目錄下(放什麼有放什麼的地方,最好不要亂放)。

2、在目錄 /etc/init.d/ 下,新建乙個以服務名為檔名的檔案。

如果我們開啟目錄 /etc/init.d/,看到的檔案其實都是服務程式檔案,每個檔案的內容都大同小異,我們會看到,這裡的檔案在檔案結構上幾乎是一樣的。幾乎每個檔案都有 start、stop、restart和status這樣的標誌,對,我們新建的這個檔案也具有相同的結構,只是在這些標誌內部把相應的可執行程式換成我們自己的可執行程式即可,知道怎麼做了嗎?那就是:複製——修改——儲存。

3、在目錄 /etc/rc3.d/ 下,新建乙個指向在第2步中建立的服務檔案的符號連線檔案。

開啟目錄 /etc/rc3.d/ ,我們將看到這裡都是符號連線檔案(linux系統中的符號連線相當於windows中的快捷方式)。採用以下命令格式:

ln -sf 目標檔名 連線檔名

連線檔名益採用「sxx目標檔名」的格式,其中xx一般是乙個從1到100的整數,它表示啟動優先順序,數字越大,優先順序越低,比如:服務a的執行要依賴服務b,那a的xx數字就應該大於b的。後跟「目標檔名」是為了一目了然,一看就知道是哪個檔案的符號連線。

目錄 /etc/rc3.d/ 是系統啟動時自動搜尋的目錄,該目錄下的符號連線檔案的目標檔案,都將被執行,這就是在這個目錄建立符號連線的原因——為了開機就執行。

好了,完成以上3個步驟,你就把自己的乙個可執行程式做成系統的乙個服務了,它具有我們一開始說的幾個特定。我們可以用service命令控制這個程式了:

啟動:service hdz_service start

停止:service hdz_service stop

重啟:service hdz_service restart

上面的 hdz_service 為服務名,也就是在第2步中建立的檔名。

不過,好象感覺比較麻煩,能否把這幾個步驟自動化一下?這樣在一台新機子上部署就方便了,也更象回事 -_^!辦法當然有了,還記得我們那個記錄**檔案之間依賴關係的makefile檔案嗎?呵呵,我們在這裡要用到它了。

在makefile檔案中新增乙個標誌,並在該標誌下新增和下面類似的**:

install:

cp ./hdz_pro /usr/sbin/

cp ./hdz_service /etc/init.d/

cd /etc/init.d/

chmod +x hdz_service

cd /etc/rc3.d/

ln -sf ../init.d/hdz_service ./s99hdz_service

在標誌install下的沒一句話,前面一定要留空白,這不僅是有利於閱讀,更是乙個要求,makefile檔案要求每一句可執行語句前都要有空白(空格或tab)。

上面**中的 hdz_pro 和 hdz_service 分別是可執行檔名和服務名,這兩個名稱換成你自己的就行了,操作時用以下命令:

make install

執行完就一切ok了,簡單吧?

大家在看我寫的東東時,時不時會碰到「hdz」這樣的東西,這是我名字的縮寫,說明這正是要替換的。

建立linux可執行程式

1.在vendor rockchip目錄下建立工程目錄loopread 2.目錄結構如下 loopread.mk sepolicy file contexts loopread.te src android.mk etc init.loopread.rc loopread.c3.下面逐步解讀工程檔案...

Linux 呼叫可執行程式

3.使用execl 常用方法 二 system函式 在c c 程式中,經常需要呼叫其它的程式來先成某項任務,例如其它的c c 程式 作業系統命令或shell指令碼,c c 提供了exec函式族和system函式來實現這個功能。exec函式族提供了乙個在程序中啟動另乙個程式執行的方法。它可以根據指定的...

gdb除錯linux可執行程式

gdb除錯程式例子 root localhost cswapserver dist gdb cswapserver gnu gdb gdb red hat enterprise linux 7.2 83.el6 license gplv3 gnu gpl version 3 or later thi...