服务管理

服务管理

服务的介绍

在开始介绍如何管理Linux的服务前,先为你介绍Linux的服务究竟有哪些。这些服务的分类方法,以及一些关于服务的基本概念

服务的种类

Linux提供了许多的服务。这些服务,可以使依照其功能和依照服务启动的方法与执行时的特性进行分类。

依照功能分类:

  • 系统服务

— 某些服务的服务对象是Linux系统本身,或者Linux系统用户,这类的服务我们称为系统服务(System Service)

  • 网络服务

— 提供给网络中的其他客户端(Clients)调用使用的服务,这类的服务我们统称为网络服务(Networking Service)。

依照服务启动的方法分类

*独立系统服务

— 服务一经启动,除非因为关闭系统或者管理者手动结束,否则都将在后台执行,不管有没有被用到。这样的服务我们称为独立系统服务(Standalone Service)。 独立系统服务有时候又被称为Sys V服务 (Sys V Service)

  • 临时服务

— 与独立系统服务不同,临时服务(Transient Service)平时并不会启动,而是当客户端需要时才会被启动,使用完毕会结束。

服务的管理

手动的管理独立系统服务

为了简化Linux服务管理的麻烦,Linux特别为每一个独立式的服务,提供了一个服务启动程序文件(Service Startup Script)。

所有的服务启动文件被储存在/etc/rc.d/init.d/目录下

如何利用脚本直接管理服务

直接执行启动程序文件(rhel6与rhel7均可使用)

/etc/rc.d/init.d/里面每一个文件就是某一个服务的启动程序文件,你可以直接执行某一个启动程序文件,借以来启动或者停止该服务

不同的服务启动文件可能会有不同的动作参数:

1
2
3
4
5
6
7
8
9
10
11
- start: 启动这个服务

- stop: 停止这个服务

- restart: 先停止,再启动,也就是重新启动的意思。

- reload: 重载配置文件,这个参数只有在服务已经启动的状况下才 能使用。

- condrestart:有条件的重新启动,这个服务必须是已经启动的,才会被重新启动;如果这个服务尚未启动,则无须启动之。

- status: 查看目前服务的启动状态。

eg.

1
/etc/init.d/iprdump status

service命令管理方法(rhel6与rhel7均可使用)

用法:service servicename action

动作参数:

1
start|stop|status

eg.

1
service httpd status

systemctl命令管理方法(适用与rhel7)

用法:systemctl servicename action

动作参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
systemctl		status 	servicename		##查看服务状态			
stop ##关闭服务
start ##开启服务
restart ##重启服务
reload ##重新加载服务配置
enable ##设定服务开机启动
disable ##设定服务开机关闭
mask ##锁定服务
unmask ##解锁服务
list-dependencies ##查看服务的依赖关系

systemctl list-unit-files ##查看所有服务的开机启动情况
list-units ##查看服务当前状态

eg.

1
systemctl status httpd

守护进程

xinetd是一个特殊的程序,不断监控所有通讯端口。一旦有客户端调用某一个启动文件时,这个程序就要负责启动该服务;而在客户端使用完毕后,该程序也必须要负责结束。

守护进程服务位置:/etc/xinetd.d

1
service    xinetd      start/stop/status

【注】:有关网络守护进程服务程序xinetd请阅读另外一篇文章【网络守护进程服务程序–xinetd的详解】

服务的开机自启动

Chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。

【谨记】chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接

Chkconfig [–add][–del][–list][系统服务]或chkconfig [–level \< 等级符号>][系统服务][on/off/reset]

参数用法:

–add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据

–del 删除所指定的系统服务,不再由chkconfig指令管理它,并同时在系统启动的叙述文件内删除相关数据

–devel 等级代号,指定读系统系统服务要在哪一个执行等级中开启或关闭

  • 等级0:表示关机
  • 等级1:单用户模式
  • 等级2:无网络连接的多用户命令行模式
  • 等级3:有网络连接的多用户命令行模式
  • 等级4:不可用
  • 等级5:带图形界面的多用户模式
  • 等级6:重新启动

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

  • chkconfig –list [name]:显示所有运行级系统服务的运行状态信息(on或off),如果指定了name,那么只显示指定的服务在不同运行级的状态。

  • chkconfig –add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。

  • chkconfig –del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。

  • chkconfig [–level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

1
2
3
4
5
6
chkconfig --list 				#列出系统所有的服务启动情况
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级35为开机运行服务,--level 35表示操作只在等级35执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2345等级

【注】rhel7里面也可以使用systemctl disable/enable servicename来管理服务的开机是否自启动