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

相关推荐
无敌小茶12 分钟前
Linux学习笔记之环境变量
linux·笔记
Harbor Lau25 分钟前
Linux常用中间件命令大全
linux·运维·中间件
꧁坚持很酷꧂1 小时前
Linux Ubuntu18.04下安装Qt Craeator 5.12.9(图文详解)
linux·运维·qt
凉、介1 小时前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci
电鱼智能的电小鱼2 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼2 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
小诸葛的博客3 小时前
详解Linux中的定时任务管理工具crond
linux·运维·chrome
一默19913 小时前
CentOS 7.9升级OpenSSH到9.9p2
linux·运维·centos
keep intensify3 小时前
Linux常用指令
linux·服务器·php
带电的小王3 小时前
sherpa-ncnn:Linux(x86/ARM32/ARM64)构建sherpa-ncnn --语音转文本大模型
linux·语音识别·实时音视频·sherpa-ncnn