|NO.Z.00008|——————————|ManageMent|——|Linux&服務管理.V04|
阿新 • • 發佈:2022-03-25
[LinuxSystemEnd:Linux&服務管理.V04] [Applications.LinuxSystemEnd] [|Linux|系統管理|服務管理|獨立的服務|基於xinetd服務|httpd啟動指令碼分析|原始碼包服務管理|服務優化建議|]
一、原始碼包安裝的服務管理
### --- 原始碼包服務的啟動管理 [root@server21 ~]# /usr/local/apache2/bin/apachectl start|stop|restart|…
### --- 原始碼包服務的自啟動管理 [root@server21 ~]# vim /etc/rc.d/rc.local ~~~ 修改自啟動檔案 # !/bin/sh # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/local/apache2/bin/apachectl start
二、讓原始碼包服務被服務管理命令識別
### --- 讓原始碼包服務被服務管理命令識別 ~~~ 那麼我們就做個試驗,看看如何把原始碼包安裝的 apche 變為和 RPM 包安裝的 apache 一樣, ~~~ 可以被 service、chkconfig、ntsysv 命令識別吧。試驗如下: ~~~ 解除安裝 RPM 包的 apache,避免對試驗產生影響(生產伺服器上慎用 yum 解除安裝, ~~~ 有可能造成伺服器崩潰)。 ### --- 解除安裝 RPM 包的 apache 服務 [root@server21 ~]# yum -y remove httpd
~~~ httpd: 未被識別的服務
~~~ 因為服務被解除安裝,所以 service 命令不能識別 httpd 命令
[root@server21 ~]# service httpd start
### --- 安裝原始碼包的 apache 服務,並啟動
~~~ 安裝原始碼包的 apache 服務,具體安裝方法參考軟體安裝章節。
~~~ 啟動原始碼包的 apache,檢視埠確定已經啟動
[root@server21 ~]# /usr/local/apache2/bin/apachectl start
[root@server21 ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN
### --- 讓原始碼包的 apache 服務能被 service 命令管理啟動
~~~ service 命令其實只是在/etc /init.d/目錄中查詢是否有服務的啟動指令碼,
~~~ 所以我們只需要做個軟連結把原始碼包的啟動指令碼連結到/etc/init.d/目錄中,
~~~ 就能被 service命令管理了。為了大家的習慣,我把軟連結檔案起名為 apache,
~~~ 不過注意這不是 RPM 包的 apache 哦!
~~~ 雖然 RPM 包的 apache 被解除安裝,但是 service 命令也能夠生效。
[root@server21 ~]# ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
[root@server21 ~]# service apache restart
### --- 讓原始碼包的 apache 服務能被 chkconfig 命令管理自啟動
~~~ 修改原始碼包 apache 的啟動指令碼(注意此檔案是軟連結,所以修改的還是原始碼包啟動指令碼)
[root@server21 ~]# vi /etc/init.d/apache
# !/bin/sh
#
# chkconfig: 35 86 76
# 指定 httpd 指令碼可以被 chkconfig 命令管理
# 格式是: chkconfig: 執行級別 啟動順序 關閉順序
# 這裡我們讓 apache 在 3 和 5 級別能被 chkconfig 命令管理,啟動順序是 S86,關閉順序是 K76
# (自定順序,不要和系統中已有的啟動程式順序衝突)
# description: source package apache
# 說明,內容隨意
# 以上兩句話必須加入,才能被 chkconfig 命令識別
# …省略部分輸出…
~~~ 讓 chkconfig 命令能夠管理原始碼包安裝的 apache。
[root@server21 ~]# chkconfig --add apache
~~~ 很神奇吧,雖然 RPM 包的 apche 被刪除了,
~~~ 但是 chkconfig 命令可以管理原始碼包 apache了
[root@server21 ~]# chkconfig --list | grep apache
apache 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
### --- 讓 ntsysv 命令可以管理原始碼包 apache
~~~ ntsysv 命令其實是和 chkconfig 命令使用同樣的管理機制,
~~~ 也就是說 ntsysv 已經可以進行原始碼包 apache 的自啟動管理了。
~~~ 如圖 14-3 所示:圖 14-3 ntsysv 識別 apache
### --- 總結下,如果想讓原始碼包服務被 service 命令識別並管理,
~~~ 只要做個軟連結把啟動指令碼連結到/etc/init.d/目錄中即可。
~~~ 要想讓原始碼包服務被 chkconfig 命令識別,除了需要把服務的啟動指令碼鏈
~~~ 接到/etc/init.d/目錄中,還要修改這個啟動指令碼,在啟動指令碼的開頭加入:
~~~ chkconfig: 執行級別 啟動順序 關閉
~~~ description: 說明
### --- 然後需要使用“chkconfig --add 服務名”的方式把服務加入 chkconfig 命令管理中。
~~~ 命令格式如下:
### --- 選項:
~~~ --add: 把服務加入 chkconfig 命令的管理
~~~ --del: 把服務從 chkconfig 命令的管理中刪除
[root@server21 ~]# chkconfig [選項] [服務名]
### --- 例:把 apache 服務從 chkconfig 命令的管理中刪除
[root@server21 ~]# chkconfig –del httpd
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)