建立乙個最簡單的linux隨機啟動服務 « xiaoxia[pg]
網上有不少關於如何讓linux自動執行自己編寫的指令碼或者程式的方法,但是大多數都是把命令寫到/etc/rc.d/rc.local或者/etc/rc.local裡,這樣雖然能夠實現隨機執行,但是並不夠靈活。不能像mysql,apache等服務一樣能夠使用service命令或者呼叫init.d下的指令碼啟動、關閉或者重啟程序。例如,或者service mysql restart
service apache2 stop
/etc/init.d/mysql restart因為不同的linux發行版本,對後台服務的處理方式不大一樣,所以下面以ubuntu系統為例,看看如何寫乙個簡單的隨機啟動服務。/etc/init.d/apache2 stop
準備好乙個需要隨機啟動的程式,例如/root/proxy.py,設定可執行屬性,確保可以通過輸入絕對路徑直接執行。
root@localhost:~# chmod +x proxy.pyroot@localhost:~# /root/proxy.py
loaded 0 hosts.
proxy over h2.edu.bj.ie.sogou.com.
please set your browser's proxy to ('::', 1998).
這是乙個簡單的shell指令碼,case .. in是用來根據呼叫引數進行不同的操作,start-stop-daemon是乙個可以管理daemon程序的程式,要檢視它的詳細說明,可以執行man start-stop-daemon。start的時候,使用--exec指定要執行的檔案,stop的時候,使用--name根據程序名字來使用killall結束匹配的程序。#!/bin/shcase "$1" in
start)
start-stop-daemon --start --background --exec /root/proxy.py
;;stop)
start-stop-daemon --stop --name proxy.py
esac
接著,設定指令碼檔案屬性,設定可執行標記。
root@localhost:~# chmod 755 /etc/init.d/proxy這樣子,就可以使用service命令來啟動和關閉程序了,例如啟動程序如下:
關閉程序,root@localhost:~# service proxy startroot@localhost:~# ps aux|grep proxy
root 353 1.4 1.9 8644 5212 ? s 09:50 0:00 /usr/bin/python /root/proxy.py
root 355 0.0 0.2 1900 596 pts/0 s+ 09:50 0:00 grep --color=auto proxy
到這裡,乙個linux服務的程序控制指令碼已經寫好了,但是要實現隨機啟動,還需要乙個步驟。root@localhost:~# service proxy stoproot@localhost:~# ps aux |grep proxy
root 365 0.0 0.2 1900 592 pts/0 s+ 09:51 0:00 grep --color=auto proxy
linux開機的時候,不是直接執行/etc/init.d下的所有指令碼的,而是根據不同的runlevel來執行/etc/rc$runlevel.d下的指令碼。這裡的runlevel是用以區別系統的執行方式(例如單使用者的runlevel,多**桌面的runlevel,伺服器的runlevel都不同)。
在ubuntu裡,可以使用update-rc.d來把/etc/init.d/proxy安裝到各個runlevel中。更多關於update-rc.d的說明,請參見man update-rc.d。
update-rc.d後面有三個引數,分別是/etc/init.d下的指令碼名字,預設安裝方式,執行的優先順序。優先順序的數字越大,表示越遲執行,這裡我們把自己寫的服務放在最後執行。root@localhost:~# update-rc.d proxy defaults 99update-rc.d: warning: /etc/init.d/proxy missing lsb information
update-rc.d: see adding system startup for /etc/init.d/proxy ...
/etc/rc0.d/k99proxy -> ../init.d/proxy
/etc/rc1.d/k99proxy -> ../init.d/proxy
/etc/rc6.d/k99proxy -> ../init.d/proxy
/etc/rc2.d/s99proxy -> ../init.d/proxy
/etc/rc3.d/s99proxy -> ../init.d/proxy
/etc/rc4.d/s99proxy -> ../init.d/proxy
/etc/rc5.d/s99proxy -> ../init.d/proxy
如果要解除安裝隨機啟動的服務,執行
update-rc.d -f proxy remove在update-rc.d安裝的時候提示了警告資訊,是因為我們寫的/etc/init.d/proxy太簡陋了,連lsb的資訊也沒有提供。
update-rc.d: warning: /etc/init.d/proxy missing lsb information只需要做一些小改動,就可以避免那個警告了。如下:update-rc.d: see
esac到此,乙個最簡單的隨機啟動服務寫好了,看起來文章挺長的,但其實也就幾個命令而已。
在下次開機啟動的時候,proxy.py就會以root使用者身份被自動執行。
Ubuntu乙個最簡單的Linux隨機啟動服務
網上有不少關於如何讓linux自動執行自己編寫的指令碼或者程式的方法,但是大多數都是把命令寫到 etc rc.d rc.local或者 etc rc.local裡,這樣雖然能夠實現隨機執行,但是並不夠靈活。不能像mysql,apache等服務一樣能夠使用service命令或者呼叫init.d下的指令...
建立乙個最簡單的VST
vst外掛程式在國內 人中還是被廣泛使用的,從0開始開發vst外掛程式,我個人想著還是從vst開始比較好。因為win32的基礎不是很好,動態鏈結庫的程式設計也不清楚,所以吃了很多苦頭。廢話戛然而止。第一步使用vs2013 新建工程,win32工程,dll,空專案,匯出符號。這裡我一開始新建的是mfc...
乙個最簡單的Linux核心模組
include include static int init hello init void static void exit hello exit module init hello init module exit hello exit module license gpl 這個最簡單的核心模...