时间:2022-10-15 10:19:10 | 栏目:Linux | 点击:次
# 通过源码包的安装路径,找到该服务的启动脚本, # 也就是获得该服务的启动脚本的绝对路径, # 最后加上启动选项。 [root@localhost ~]# /usr/local/apache2/bin/apachectl start|stoplrestart|...
注意:
按用源码包安装服务的时候,每个服务的启动脚本是不同的。
我们如何知道一个服务的启动脚本叫什么名称呢?
在官方给你的安装文档中,会明确的告诉你该服务的启动脚本叫什么名称。
开启服务示例:
说明:
这个报错说的是localhost.localdomain
这个主机名没有被识别,但是apache服务启动起来是没有问题的。
查看apache
服务是否开启,执行命令ps aux | grep httpd
。
如下图所示:
通过配置/etc/rc.d/rc.local
配置文件,来实现通过源码包安装的服务的自启动管理。
这个方法是通用的,不论是源码包还是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
命令识别。
我们所要解决的问题如下图:
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
命令进行启动了,没有报未被识别的服务错误。
接上一步,然后需要对软链接到/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
命令开启该服务的自启动状态了。
ntsysv
命令其实是和chkconfig
命令使用同样的管理机制,也就是说上面chkconfig
命令能够管理源码包安装的服务,ntsysv
命令也就可以管理通过源码包安装的服务了。
执行[root@localhost ~]# ntsysv
命令,可以在图形界面中找到我们上边刚刚配置的apache
服务。
如果想让源码包服务被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包的方式启动服务,就很好。