通過修改Linux服務自動啟動指定應用程式 Linux中修改系統服務的命令是chkconfig (check config),命令的詳細解釋如下: chkconfig 功能說明:檢查,設定系統的各種服務。 語 法:chkconfig [--add][--del][--list][系統服務] 或 chkconfig [--level <等級代號>][系統服務][on/off/reset] 補充說明:這是Red Hat公司遵循GPL規則所開發的程式,它可查詢作業系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。 參 數: --add 增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。 --del 刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述檔案內刪除相關資料。 --level<等級代號> 指定讀系統服務要在哪一個執行等級中開啟或關畢 首先來執行 chkconfig --list命令來查看所有已添加的系統服務(下面的結果只是一部分) [root@fd init.d]# chkconfig --listdiskdump 0:off 1:off 2:off 3:off 4:off 5:off 6:offxfs 0:off 1:off 2:on 3:on 4:on 5:on 6:offrhnsd 0:off 1:off 2:off 3:on 4:on 5:on 6:offcups-config-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:offnetfs 0:off 1:off 2:off 3:on 4:on 5:on 6:offnfs 0:off 1:off 2:off 3:off 4:off 5:off 6:offmicrocode_ctl 0:off 1:off 2:on 3:on 4:on 5:on 6:offnetplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:offnetdump 0:off 1:off 2:off 3:off 4:off 5:off 6:offcpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:offsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:offsmb 0:off 1:off 2:off 3:off 4:off 5:off 6:offntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:offrawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:offpsacct 0:off 1:off 2:off 3:off 4:off 5:off 6:offvncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:offsaslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:offdc_server 0:off 1:off 2:off 3:off 4:off 5:off 6:offmdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:offhttpd 0:off 1:off 2:off 3:off 4:off 5:off 6:offibmasm 0:off 1:off 2:off 3:off 4:off 5:off 6:offdc_client 0:off 1:off 2:off 3:off 4:off 5:off 6:off 其中第一列表示服務名,後面的0-6表示在這六種啟動方式中該服務是啟動(on)還是關閉(off)比如預設情況下,自動檢測新硬體的服務是啟動的(服務名是kudzu),每次啟動需要檢測一段時間,我們可以關閉服務,以後有了硬體改動在調用它。chkconfig kudzu off chkconfig --list kudzukudzu 0:off 1:off 2:off 3:off 4:off 5:off 6:off可以看到檢測新硬體的服務都被關閉了,再次啟動時就不會檢測新硬體了。如果有了硬體改動你可以選擇將此服務開啟(chkconfig kudzu on),其實有更簡單的方法,輸入service kudzu start手動啟動檢測新硬體服務就可以了。這些服務都存放在/etc/init.d目錄下,他們都是可執行檔shell檔案,比如剛才用的檢測新硬體服務[root@fd /]# ls -l /etc/init.d/kudzu-rwxr-xr-x 1 root root 2095 Aug 23 2005 /etc/init.d/kudzu其實我們編寫的shell檔案也可以放在這裡,然後添加成系統服務,但是我們必須遵守一個簡單的預定。我們先來看看kudzu的具體內容吧根據這個模式編寫一個簡單的啟動tomcat的服務指令碼,vi /etc/init.d/tomcat,內容如下 [root@fd /]# cat /etc/init.d/kudzu#!/bin/bash## kudzu This scripts runs the kudzu hardware probe.## chkconfig: 345 05 95# description: This runs the hardware probe, and optionally configures \# changed hardware. # This is an interactive program, we need the current locale具體內容省略 # chkconfig: 2345 20 80# description: simple example to start tomcat export JAVA_HOME=/usr/java/jdk1.5.0_16export CLASS_PATH=/usr/java/jdk1.5.0_16/libexport PATH=$JAVA_HOME/bin:$PATH/usr/Tomcat/bin/startup.sh 將tomcat添加到服務中chkconfig --add tomcat狀態設為啟動chkconfig tomcat on 在tomcat檔案的頭幾行的備註陳述式中,必須包含chkconfig和description兩部分內容,否則在執行“chkconfig --add tomcat”時,會出現“tomcat服務不支援chkconfig”的錯誤提示。chkconfig這行表示預設啟動的運行層級以及啟動和停止的優先順序,如該服務預設不再任何運行級啟動,則以 - 代替運行層級。在tomcat中表示指令碼在運行級2、3、4、5啟動,啟動優先權為20(優先權數越大服務啟動的越晚),停止優先權為80。如果服務已經設定好了,那麼通過編輯tomcat檔案來修改啟動優先權就不管用了,先刪除服務再添加進來就可以了。 我模仿檢測新硬體服務的內容編寫一個較為複雜的tomcat服務,在系統啟動時啟動tomcat,在系統關閉時關閉tomcat。內容如下 # chkconfig: 2345 30 70 # description: Starts and Stops Tomcat. export JAVA_HOME=/usr/java/jdk1.5.0_16export CLASS_PATH=/usr/java/jdk1.5.0_16/libexport PATH=$JAVA_HOME/bin:$PATH case "$1" in start) /usr/Tomcat/bin/startup.sh touch /var/lock/subsys/tomcat ;; status) if [ -f /var/lock/subsys/tomcat ]; then echo $"tomcat is running" exit 0 fi echo $"tomcat has stopped" exit 3 ;; stop) /usr/Tomcat/bin/shutdown.sh rm -f /var/lock/subsys/tomcat ;; restart) /usr/Tomcat/bin/shutdown.sh/usr/Tomcat/bin/startup.sh;;*) echo "Usage: tomcat {start|stop|restart|status}" exit 1 esac exit 0