Linux系统的服务——以Centos7为例

一、Linux系统的服务简介

服务是向外部提供对应功能的进程,其运行在系统后台,能够7*24小时持续不断的提供外界随时发来的服务请求,且服务进程常驻在内存中,具有固定的端口号,通过端口号就能找到服务内容。

提供服务的一端叫做服务端,向服务端发送请求内容的叫做客户端,具体的流程为:

1、首先服务器端启动服务进程,服务进程正常运行后会开放对应的固定端口号(比如80、8080、5000等端口);

2、然后客户端向服务端对应的(IP:服务端口)发起请求;

3、服务端所在主机的内核接收到客户发送来的请求数据包,系统内核会分析数据包内容(识别请求的端口号后,内核会对应到该该端口号对应的服务程序,系统内核会将客户端发送来的请求报文内容发送给对应的服务程序,服务程序收到报文后,就会与客户端建立连接处理对应的内容,并进行数据传输工作。

在Linux中,服务分为【独立守护进程】和超【级守护进程(瞬时守护进程)】;独立守护进程是指(自行在后台实时监听客户端发送来的请求内容并进行处理,基本上所有的服务都是独立守护进程类的服务) 。超级守护进程是专指xinetd这个服务,这个服务代为管理着一些特殊的系统服务,这类服务只有在被请求的时候才会由xinetd通知它启动对应服务,服务提供处理工作完成后就关闭服务,这类服务称为瞬时守护进程,即存在的时间非常短暂。

简单的说【服务是类指那些在系统后台持续运行并提供基本功能,常驻内存中(如网络连接、SSH登录、日志管理等功能)的程序】。

二、Linux服务的常用操作_Centos7及其更高版本

2.1、列出Linux所有服务和状态

1、查看Linux系统中的所有服务

bash 复制代码
systemctl list-units --type service --all

2、查看Linux系统所有服务的开机自启动状态命令:

bash 复制代码
systemctl list-unit-files

3、查看所有已经激活的服务命令

bash 复制代码
systemctl list-units --type service

2.2、查看服务状态

比如我这里查看httpd服务状态,其中状态(Active:active(running)表示已经启动运行中);Active:inactive(dead)表示停止):

bash 复制代码
systemctl status 服务名称 
bash 复制代码
systemctl status 服务名称.service 

查看服务是否在运行中命令:

bash 复制代码
systemctl is-active 服务名称

2.3、启动服务

bash 复制代码
systemctl start 服务名称

比如我这里重启httpd服务,且查看启动后的状态(Active:active(running)表示已经启动运行中):

bash 复制代码
systemctl start 服务名称.service

2.4、停止服务

bash 复制代码
systemctl stop 服务名称

比如我这里停止httpd服务,且查看停止后的状态(Active:inactive(dead)表示停止):

bash 复制代码
systemctl stop 服务名称.service

2.5、重启服务

bash 复制代码
systemctl restart 服务名称

比如我这里重启httpd服务,且查看重启后的状态(Active:active(running)表示已经启动运行中):

bash 复制代码
 systemctl restart 服务名称.service

2.6、设置服务开机自启

bash 复制代码
systemctl enable 服务名称
bash 复制代码
systemctl enable 服务名称.service

任选这2个命令中的一个就可以;需要注意的是:设置服务开启自启后如果要验证的话,需要重启服务器后再查看服务状态为 (Active:active(running))即为设置服务开机自启成功。

如下是立即重启Linux服务器的命令:

bash 复制代码
reboot -h now

查看服务是否开机自动启动(enabled表示已经启动)

bash 复制代码
systemctl is-enabled 服务名称

2.7、禁用服务开机自启

bash 复制代码
systemctl disable httpd
bash 复制代码
systemctl disable 服务名称.service

任选这2个命令中的一个就可以;需要注意的是:禁用服务开启自启后如果要验证的话,需要重启服务器后再查看服务状态为 (Active:inactive(dead)表示停止)即为禁用服务开机自启成功。

三、服务的配置文件

对于支持 systemd 的程序,在安装该软件的时候,会自动的在 【/usr/lib/systemd/system 】目录添加一个关于该程序的服务配置文件(比如:我使用【yum install httpd -y】安装了该程序,我们可以使用【cat /usr/lib/systemd/system/httpd.service】命令查看到该程序的服务配置文件内容),如下图所示:

在我们给httpd服务设置了开机自启【systemctl enable httpd】命令后,可以看到在【/etc/systemd/system/multi-user.target.wants/】 目录下添加了该程序的符号链接,这个链接指向【/usr/lib/systemd/system 】里面的【httpd.service】文件

在设置了服务的开机启动命令后,需要等下一次开机的时候,才会自动行 【/etc/systemd/system/】 目录中的文件服务;可以通过【systemctl is-enabled httpd】命令查看服务是否设置开机自动启动,如下图所示:

注意:【/etc/systemd/system/】是管理员根据需求建立的执行脚本,也可以理解为是【/usr/lib/systemd/system/】的连接映射。

3.1、systemctl

在 Centos7 之前是使用 service 进行服务的管理,虽然service使用起来简单,但对于每一个服务,都需要我们人为手动的编写对应脚本文件来控制服务相关的启动、停止、重启等操作,服务控制得好坏,完全依赖于编写脚本的人,这样的话对于服务来说不是很稳定,对于管理服务的人员也不友好。

为了解决service带来的服务不稳定,对管理服务人员不友好等问题,在 Centos7 中采用了新的【systemctl】服务管理工具,systemctl使用固定规范格式的脚本内容来控制服务的启动、停止等相关操作,使得服务的管理变得简单了很多(即:对服务的启动、停止、重启、开机自启等操作只需要一条命令就可实现)

3.2、systemd

面向管理员的 systemd,第 III 部分 (0pointer.de)https://0pointer.de/blog/projects/systemd-for-admins-3.htmlsystemd.unit (0pointer.de)https://0pointer.de/public/systemd-man/systemd.unit.htmlsystemd.service (0pointer.de)https://0pointer.de/public/systemd-man/systemd.service.html

systemd 基础知识简介 (suse.com)https://documentation.suse.com/smart/systems-management/html/systemd-basics/index.html

相关推荐
正在努力的小河39 分钟前
Linux设备树简介
linux·运维·服务器
荣光波比40 分钟前
Linux(十一)——LVM磁盘配额整理
linux·运维·云计算
LLLLYYYRRRRRTT1 小时前
WordPress (LNMP 架构) 一键部署 Playbook
linux·架构·ansible·mariadb
轻松Ai享生活1 小时前
crash 进程分析流程图
linux
大路谈数字化3 小时前
Centos中内存CPU硬盘的查询
linux·运维·centos
luoqice4 小时前
linux下查看 UDP Server 端口的启用情况
linux
倔强的石头_5 小时前
【Linux指南】动静态库与链接机制:从原理到实践
linux
赏点剩饭7785 小时前
linux中的hostpath卷、nfs卷以及静态持久卷的区别
linux·运维·服务器
神鸟云5 小时前
DELL服务器 R系列 IPMI的配置
linux·运维·服务器·网络·边缘计算·pcdn
herderl5 小时前
**僵尸进程(Zombie Process)** 和**孤儿进程(Orphan Process)**
linux·运维·服务器·网络·网络协议