加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.dakongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux源码包服务管理启动与自启动介绍

发布时间:2022-07-09 02:17:02 所属栏目:Linux 来源:互联网
导读:本节我们先学习源码包服务的启动管理,再来学习源码包服务的自启动管理,最后学习如何让源码包服务被系统服务管理命令识别。 源码包服务的自启动管理 源码包服务的白启动管理也不能依靠系统的服务管理命令,而只能把标准启动命令写入 /etc/rc.d/rc.local 文
  本节我们先学习源码包服务的启动管理,再来学习源码包服务的自启动管理,最后学习如何让源码包服务被系统服务管理命令识别。

       源码包服务的自启动管理
 
  源码包服务的白启动管理也不能依靠系统的服务管理命令,而只能把标准启动命令写入 /etc/rc.d/rc.local 文件中。系统在启动过程中读取 /etc/rc.d/rc.local 文件时,就会调用源码包服务的启动脚本,从而让该服务开机自启动。命令如下:
 
  [root@localhost ~]# vi /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 don11
 
  #want to do the full Sys V style init stuff.
 
  touch /var/lock/subsys/local /usr/local/apache2/bin/apachectl start
 
  #加入源码包服务的标准启动命令,保存退出,源码包安装的apache服务就被设为自启动了
 
  让源码包服务被服务管理命令识别
 
  在默认情况下,源码包服务是不能被系统的服务管理命令所识别和管理的,但是如果我们做一些设定,则也是可以让源码包服务被系统的服务管理命令所识别和管理的。不过笔者并不推荐大家这样做,因为这会让本来区别很明确的源码包服务和 RPM 包服务变得容易混淆,不利于系统维护和管理。
 
  我们做一个实验,看看如何把源码包安装的 apache 服务变为和 RPM 包默认安装的 apache 服务一样,可以被 service、chkconfig、ntsysv 命令所识别。实验如下:
 
  1) 卸载RPM包默认安装的apache服务
 
  [root@localhost ~]# yum -y remove httpd
 
  #卸载RPM包默认安装的apache服务,避免对实验产生影响(在生产服务器上慎用yum卸载,因为这有可能造成服务器崩溃)
 
  [root@localhost ~]# service httpd start httpd:未被识别的服务
 
  #因为服务被卸载,所以service命令不能识别httpd服务
 
  2) 安装源码包的apache服务,并启动
 
  #安装源码包的apache服务
 
  [root@localhost ~]# /usr/local/apache2/bin/apachect1 start
 
  [root@localhost ~]# netstat -tlun | grep 80
 
  tcp 0 0 :::80 :::* LISTEN
 
  #启动源码包安装的apache服务,查看端口确定已经启动
 
  3) 让源码包安装的apache服务能被service命令管理启动
 
  [root@localhost ~]# ln -s /usr/local/apache2/bin/apachectl /etc/±nit.d/apache
 
  #service命令其实只是在/etc/init.d/目录中查找是否有服务的启动脚本,所以我们只需要做一个软链接,把源码包的启动脚本链接到/etc/init.d/目录中,就能被service命令所管理了。为了照顾大家的习惯,我把软链接文件命名为apache,注意这不是RPM包默认安装的apache服务
 
  [root@localhost ~]# service apache restart
 
  #虽然RPM包默认安装的apache服务被卸载了,但是service命令也能够生效
 
  4) 让源码包安装的apache服务能被chkconfig命令管理自启动
 
  [root@localhost ~]# vi /etc/init.d/apache
 
  #修改源码包安装的apache服务的启动脚本(注意此文件是软链接,所以修改的还是源码包启动脚本)
 
  #!/bin/sh
 
  #
 
  #chkconfig: 35 86 76
 
  #指定httpd脚本可以被chkconfig命令所管理
 
  #格式是:chkconfig:运行级别 启动顺序 关闭顺序
 
  #这里我们让apache服务在3和5级别中能被chkconfig命令所管理,启动顺序是S86,关闭顺序是K76
 
  #(自定顺序,不要和系统中已有的启动顺序冲突)
 
  #description: source package apache
 
  #说明,内容随意
 
  #以上两句话必须加入,才能被chkconfig命令所识别 ...省略部分输出...
 
  [root@localhost ~]# chkconfig --add apache
 
  #让chkconfig命令能够管理源码包安装的apache服务
 
  [root01ocalhost ~]# chkconfig --list | grep apache
 
  apache 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
 
  #很神奇吧,虽然RPM包默认安装的apache服务被删除了,但是chkconfig命令可以管理源码包安装的tapache服务
 
  5) 让ntsysv命令可以管理源码包安装的apache服务
 
  #ntsysv 命令其实和 chkconfig 命令使用同样的管理机制,也就是说,ntsysv 已经可以进行源码包安装 apache 服务的自启动管理了,
  源码包服务的启动管理
 
  源码包服务中所有的文件都会安装到指定目录当中,并且没有任何垃圾文件产生(Linux 的特性),所以服务的管理脚本程序也会安装到指定目录中。源码包服务的启动管理方式就是在服务的安装目录中找到管理脚本,然后执行这个脚本。
 
  问题来了,每个服务的启动脚本都是不一样的,我们怎么确定每个服务的启动脚本呢?还记得在安装源码包服务时,我们强调需要査看每个服务的说明文档吗(一般是 INSTALL 或 READEM)?在这个说明文档中会明确地告诉大家服务的启动脚本是哪个文件。
 
  我们用 apache 服务来举例。一般 apache 服务的安装位置是 /usr/local/apache2/ 目录,那么 apache 服务的启动脚本就是 /usr/local/apache2/bin/apachectl 文件(查询 apache 说明文档得知)。启动命令如下:
 
  [root@localhost ~]# /usr/local/apache2/bin/apachectl start|stop|restart|...
 
  #源码包服务的启动管理
 
  例如:
 
  [root@localhost ~]# /usr/local/apache2/bin/apachectl start
 
  #会启动源码包安装的apache服务
 
  注意,不管是源码包安装的 apache,还是 RPM 包默认安装的 apache,虽然在一台服务器中都可以安装,但是只能启动一因为它们都会占用 80 端口。
 
  源码包服务的启动方法就这一种,比 RPM 包默认安装的服务要简单一些。
 
  总结一下,如果想让源码包服务被service命令所识别和管理,则只需做一个软链接把启动脚本链接到 /etc/init.d/ 目录中即可。要想让源码包服务被 chkconfig 命令所是被,除了需要把服务的启动脚本链接到 /etc/init.d/ 目录中,还要修改这个启动脚本,在启动脚本的开头加入如下内容:
 
  #chkconfig:运行级别 启动顺序 关闭
 
  #description:说明
 
  然后需要使用"chkconfig--add 服务名"的方式把服务加入 chkconfig 命令的管理中。命令格式如下:
 
  [root@localhost ~]# chkconfig [选项][服务名]
 
  选项:
 
  -add:把服务加入 chkconfig 命令的管理中;
 
  -del:把服务从 chkconfig 命令的管理中删除;
 
  例如:
 
  [root@localhost ~]# chkconfig -del httpd
 
  #把apache服务从chkconfig命令的管理中删除。
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!