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

Linux中独立服务管理RPM包的启动与自启动

发布时间:2022-07-06 22:29:20 所属栏目:Linux 来源:互联网
导读:我们知道,RPM 包默认安装的服务分为独立的服务和基于 xinetd 的服务,本节来学习独立服务的管理。 独立服务的启动管理 独立的服务要想启动,主要有两种方法。 1) 使用/etc/init.d/目录中的启动脚本来启动独立的服务 既然所有独立服务的启动脚本都存放在 /et
  我们知道,RPM 包默认安装的服务分为独立的服务和基于 xinetd 的服务,本节来学习独立服务的管理。
 
  独立服务的启动管理
 
  独立的服务要想启动,主要有两种方法。
 
  1) 使用/etc/init.d/目录中的启动脚本来启动独立的服务
 
  既然所有独立服务的启动脚本都存放在 /etc/init.d/ 目录中,那么,调用这些脚本就可以启动独立的服务了。这种启动方式是推荐启动方式,命令格式如下:
 
  [root@localhost ~]#/etc/init.d独立服务名 start| stop|status|restart|...
 
  参数:
 
  start:启动服务;
 
  stop:停止服务;
 
  status:查看服务状态;
 
  restart:重启动服务;
 
  我们以启动 RPM 包默认安装的 httpd 服务为例,命令如下:
 
  [root@localhost ~]# /etc/init.d/httpd start
 
  正在启动httpd:
 
  [确定]
 
  #启动httpd服务
 
  [root@localhost ~]# /etc/init.d/httpd status
 
  httpd (pid 13313)正在运行…
 
  #查询httpd服务状态,并能够看到httpd服务的PID
 
  [root@localhost ~]#/etc/init.d/httpd stop
 
  停止 httpd:
 
  [确定]
 
  #停止httpd服务
 
  [root@localhost ~]#/etc/init.d/httpd restart
 
  停止httpd:
 
  [失败]
 
  正在启动httpd:
 
  [确定]
 
  重启动httpd服务
 
  2) 使用service命令来启动独立的服务
 
  在 CentOS 系统中,我们还可以依赖 service 命令来启动独立的服务。service 命令实际上只是一个脚本,这个脚本仍然需要调用 /etc/init.d/ 中的启动脚本来启动独立的服务。而且 service 命令是红帽系列 Linux 的专有命令,其他的 Linux 发行版本不一定拥有这条命令,所以我们并不推荐使用 service 命令来启动独立的服务。
 
  service 命令格式如下:
 
  [root@localhost ~]# service 独立服务名 start|stop|restart|...
 
  例如:
 
  [root@localhost ~]# service httpd restart
 
  停止httpd:
 
  [确定]
 
  正在启动httpd:
 
  [确定]
 
  命令比输入 /etc/init_d/ 目录要稍微简单。service 命令还可以查看所有独立服务的启动状态,这是一个常用功能,命令格式如下:
 
  [root@localhost ~]# service --status -all
 
  选项:
 
  --status -all:列出所有独立服务的启动状态;
 
  例如:
 
  abrtd(pid 1505)正在运行…
 
  abrt-dumpoops(pid 1513)正在运行…
 
  acpid(pid 1312)正在运行...
 
  …省略部分输出…
 
  随着 httpd 服务的启动和停止,使用"netstat -tlun"命令就会看到 80 端口出现和消失。这也就说明 apache 服务绑定的口就是 80,所以我们可以端口是否在服务器中出现来判断 apache 服务是否启动。
 
  独立服务的自启动管理
 
  自启动指的是在系统之后,服务是否随着系统的启动而自动启动。如果启动了某个服务,那么这个服务会在系统重启之后启动吗?
 
  答案是不知道,因为启动命令只负责启动服务,而和服务的自启动完全没有关系。同样地,自启动命令只管服务是否会在系统重启之后启动,而和当前系统中的服务是否启动没有关系。
 
  独立服务的自启动方法有三种,我们分别来学习。
 
  1) 使用 chkconfig 服务自启动管理命令
 
  第二种方法就是修改 /etc/rc.d/rc.local 文件,在文件中加入服务的启动命令。这个文件是在系统启动时,在输入用户名和密码之前最后读取的文件(注意:/etc/rc.d/rc.loca和/etc/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 don't want to do the full Sys V style init stuff.
 
  touch /var/lock/subsys/local
 
  /etc/rc.d/init.d/httpd start
 
  #在文件中加入apache的启动命令
 
  这样,只要重启之后,apache 服务就会开机自启动了。推荐大家使用这种方法管理服务的自启动,有两点好处:
 
  第一,如果大家都采用这种方法管理服务的自启动,当我们碰到一台陌生的服务器时,只要查看这个文件就知道这台服务器到底自启动了哪些服务,便于集中管理。
 
  第二,chkconfig 命令只能识别 RPM 包默认安装的服务,而不能识别源码包安装的服务。 源码包安装的服务的自启动也是通过 /etc/rc.d/rc.local 文件实现的,所以不会出现同一台服务器自启动了两种安装方法的同一个服务。
 
  还要注意一下,修改 /etc/rc.d/rc.local 配置文件的自启动方法和 chkconfig 命令的自启动方法是两种不同的自启动方法。所以,就算通过修改 /etc/rc.d/rc.local 配置文件的方法让某个独立的服务自启动了,执行"chkconfig --list"命令并不到有什么变化。
 
  3) 使用 ntsysv 命令管理自启动
 
  第二种方法是利用 chkconfig 服务自启动管理命令来管理独立服务的自启动,这条命令的用法如下:
 
  [root@localhost ~]# chkconfig --list
 
  使用 chkconfig 命令除了可以查看所有 RPM 包默认安装服务的自启动状态,也可以修改和设置 RPM 包默认安装服务的自启动状态,只是独立的服务和基于 xinetd 的服务的设定方法稍有不同。我们先来看看独立的服务如何设置。命令格式如下:
 
  [root@localhost ~]# chkconfig [--level 运行级别][独立服务名][on|off]
 
  #选项:
 
  --level: 设定在哪个运行级别中开机自启动(on),或者关闭自启动(off);
 
  例如:
 
  [root@localhost ~]# chkconfig --list | grep httpd
 
  httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
 
  #查询httpd的自启动状态。所有的级别都是不自启动的
 
  [root@localhost ~]# chkconfig --level 2345 httpd on
 
  #设置apache服务在进入2、3、4、5级别时自启动
 
  [root@localhost ~]# chkconfig --list | grep httpd
 
  httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
 
  #查询apache服务的自启动状态。发现在2、3、4、5这4个运行级别中变为了"启用"
 
  还记得 0~6 这 7 个 Linux 的运行级别吗?如果在 0~6 这 7 个运行级别中服务都显示"关闭",则该服务不自启动。如果在某个运行级别中显示"启用",则代表在进入这个运行级别时,该服务开机自启动。
 
  服务的自启动方法和服务的启动方法是不通用的,我们做一个实验验证一下。命令如下:
 
  [root@localhost ~]# /etc/init.d/httpd status
 
  httpd已停
 
  #查询apache服务状态,是已经停止的
 
  [root@localhost ~]# chkconfig --level 2345 httpd on
 
  #设置apache服务在进入2、3、4、5级别时自启动
 
  [root@localhost ~]# chkconfig --list|grep httpd
 
  httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
 
  #查看一下,自启动已经生效
 
  [root@localhost ~]#/etc/init.d/httpd status
 
  httpd已停
 
  #但是apache服务在当前系统中还是关闭的
 
  大家看到了吗?虽然 apach 被设置为自启动,但是当前系统中的 apache 是没有启动的,所以启动和自启动是独立的。
 
  2) 修改 /etc/rc.d/rc.local 文件,设置服务自启动

  第三种方法是使用 ntsysv 命令调用窗口模式来管理服务的自启动,非常简单。命令格式如下:
 
  [root@localhost ~]# ntsysv [--level 运行级别]
 
  选项:
 
  --level 运行级别:可以指定设定自启动的运行级别;
 
  例如:
 
  [root@localhost ~]# ntsysv --level 235
 
  #只设定2、3、5级别的服务自启动
 
  [root@localhost ~]# ntsysv
 
  #按默认的运行级别设置服务自启动
 
  执行命令后,会和 setup 命令类似,出现命令界面。
 
  这个命令的操作是这样的:
 
  上下键:在不同服务之间移动;
 
  空格键:选定或取消服务的自启动。也就是在服务之前是否输入"*";
 
  Tab键:在不同项目之间切换;
 
  F1键:显示服务的说明;
 
  需要注意的是,ntsysv 命令不仅可以管理独立服务的自启动,也可以管理基于 xinetd 服务的自启动。也就是说,只要是 RPM 包默认安装的服务都能被 ntsysv 命令管理。但是源码包安装的服务不行。
 
  这样管理服务的自启动多么方便,为什么还要学习其他的服务自启动管理命令呢? ntsysv 命令虽然简单,但它是红帽系列 Linux 的专有命令,其他的 Linux 发行版本不一定拥有这条命令,而且条命令也不能管理源码包安装的服务,所以我们推荐大家使用 /etc/rc.d/rc.local 文件来管理服务的自启动。
 

(编辑:财气旺网 - 财气网)

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