目錄
- 1、源碼包服務的啟動管理
- 2、源碼包服務的自啟動管理
- 3、讓源碼包服務被服務管理指令識别
# 通過源碼包的安裝路徑,找到該服務的啟動腳本,
# 也就是獲得該服務的啟動腳本的絕對路徑,
# 最後加上啟動選項。
[root@localhost ~]# /usr/local/apache2/bin/apachectl start|stoplrestart|...
注意:
按用源碼包安裝服務的時候,每個服務的啟動腳本是不同的。
我們如何知道一個服務的啟動腳本叫什麼名稱呢?
在官方給你的安裝文檔中,會明确的告訴你該服務的啟動腳本叫什麼名稱。
開啟服務示例:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SO2MzM3EjMwUTMtkjM3gDNxMzMxQTMyETMyAjMtgjN5kDM58CXyETMyAjMvwFO2kTOwkzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
說明:
這個報錯說的是
這個主機名沒有被識别,但是apache服務啟動起來是沒有問題的。
localhost.localdomain
檢視
apache
服務是否開啟,執行指令
ps aux | grep httpd
。
如下圖所示:
通過配置
/etc/rc.d/rc.local
配置檔案,來實作通過源碼包安裝的服務的自啟動管理。
這個方法和RPM包預設安裝的獨立服務管理方式二一樣(請看文章中的方式二:點此檢視)。
這個方法是通用的,不論是源碼包還是RPM包安裝的服務都可以,主要看的是你在
/etc/rc.d/rc.local
配置檔案中寫的是源碼包安裝的服務啟動指令,還是通過RPM包安裝的服務啟動指令。
是以在上文中推薦使用配置檔案的方式進行服務的管理,通用、統一管理Linux系統中的服務。
示例:
# 配置/etc/rc.d/rc.local配置檔案
[root@localhost ~]# 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
指令識别。
我們所要解決的問題如下圖:
(1)讓通過源碼包安裝的服務能被
service
指令管理啟動
service
指令其實隻是在
/etc/rc.d/init.d/
目錄中查找是否有服務的啟動腳本,是以我們隻需要做個軟連結,把源碼包的啟動腳本連結到
/etc/rc.d/init.d/
目錄中,就能被
service
指令管理了。
# 将通過源碼包安裝的服務的啟動腳本,在/etc/rc.d/init.d/目錄中做一個軟連結
[root@localhost ~]# ln -s /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/apachectl
/etc/rc.d/init.d/
内容,如下圖所示:
執行
service apachectl restart
指令,開啟
apche
服務。
可以看到
apche
服務可以通過
service
指令進行啟動了,沒有報未被識别的服務錯誤。
(2)讓通過源碼包安裝的服務能被
chkconfig
指令管理自啟動
接上一步,然後需要對軟連結到
/etc/rc.d/init.d/
目錄,通過源碼包安裝的服務的啟動腳本進行配置。
# 編輯/etc/rc.d/init.d/目錄中的源碼包啟動腳本
# (注意此檔案是軟連結,是以修改的還是源碼包啟動腳本)
[root@localhost ~]# vim /etc/rc.d/init.d/apachectl
# 在開頭添加内容如下
#!/bin/sh
# 添加内容-1
# 指定httpd腳本可以被chkconfig指令管理
# 格式是:chkconfig:運作級别啟動順序關閉順序
# 這裡我們設定apache在3和5級别能被chkconfig指令管理,啟動順序是S86,關閉順序是K76
# 注意:(自定順序,不要和系統中已有的啟動程式順序沖突)
# chkconfig:35 86 76
#
# 添加内容-2
# 說明,内容随意
# description:aaabbbccc
#以上兩句話必須加入,才能被chkconfig指令識别。
然後讓
chkconfig
指令能夠管理源碼包安裝的服務。
[root@localhost ~]# chkconfig --add apachectl
沒有報錯說明成功。
通過
chkconfig
指令檢視Linux中自啟動服務。
然後可以通過
chkconfig
指令開啟該服務的自啟動狀态了。
(3)讓
ntsysv
指令可以管理通過源碼包安裝的服務
ntsysv
指令其實是和
chkconfig
指令使用同樣的管理機制,也就是說上面
chkconfig
指令能夠管理源碼包安裝的服務,
ntsysv
指令也就可以管理通過源碼包安裝的服務了。
[root@localhost ~]# ntsysv
指令,可以在圖形界面中找到我們上邊剛剛配置的
apache
(4)總結
- 如果想讓源碼包服務被
指令識别并管理,隻要做個軟連結把啟動腳本連結到service
目錄中即可。/etc/rc.d/init.d/
- 要想讓源碼包服務被
指令識别,除了需要把服務的啟動腳本連結到chkconfig
目錄中,還要修改這個啟動腳本,在啟動腳本的開頭加入:/etc/rc.d/init.d/
-
:運作級别、啟動順序、關閉順序。# chkconfig
-
:說明資訊。# description
-
- 然後需要使用
的方式,把服務加入chkconfig --add 服務名
chkconfig
指令管理中。
指令格式如下:
[root@localhost ~]# chkconfig [選項] [服務名] 選項: --add:把服務加入chkconfig指令的管理。 --del:把服務從chkconfig指令的管理中删除。 # 示例: # 把apache服務從chkconfig指令的管理中删除 [root@localhost ~]# chkconfig -del httpd
-
指令配置完成,chkconfig
指令也就可以管理該服務了。ntsysv
提示:
知道源碼包安裝的服務可以這樣處理就可以了,并不推薦這樣做。通過源碼包安裝的服務就用源碼包的方式啟動服務,通過RPM包方式安裝的服務,就用RPM包的方式啟動服務,就很好。