当前位置: 首页 > news >正文

linux系统学习(12.linux服务)

目录

一、linux服务介绍

1.什么是linux服务

2.服务的分类

1. 背景:为什么需要 socket 激活

2. systemd 的 socket 激活机制是什么

3. 工作原理(步骤)

3. 服务的安装位置

1. 服务程序本身(可执行文件)

2. systemd 的服务单元文件(.service 文件,服务的启动脚本)

3. 配置文件和数据

二、apt管理的服务的常用指令


一、linux服务介绍

1.什么是linux服务

  • 定义:服务是系统长期运行的后台进程,通常由 **服务管理器(systemd、init、upstart 等)**来启动、管理。

  • 特征

    • 常驻后台,通常 开机就启动,不需要用户手动运行。

    • 提供某种功能或资源,供其他程序或用户使用。

    • 由系统的 服务管理工具 (systemctlservice) 管理。

例子:

  • sshd:SSH 远程登录服务。

  • nginx:Web 服务器服务。

  • cron:定时任务服务。

2.服务的分类

对于从往上下载的服务,一般是软件包的一部分。所以可以按照软件包作为以下分类。

(1)对于独立的服务,直接加载到内存里面,响应速度比较快。

(2)xinetd服务,只有xinetd在内存中,他管理的其他服务需要在被访问的时候加载到内存,占用内存比较少。对于ubantu20.04,这个不适用了。systemd 用来取代 xinetd 的核心功能。我个人感觉和xinetd没啥区别,啊哈哈哈哈哈。

1. 背景:为什么需要 socket 激活

  • 在早期,xinetd 的作用就是:

    • 不让每个网络服务都常驻内存。

    • 而是由 xinetd 监听端口(比如 22、21、23 等)。

    • 当有客户端请求进来时,xinetd 临时启动对应的服务进程,把 socket 交给它。

    • 服务处理完,再退出。

  • 这样省内存、简化管理,但 xinetd 已经过时。

systemd 就直接集成了类似的机制,叫 socket activation(套接字激活)

2. systemd 的 socket 激活机制是什么

定义
systemd 可以先创建并监听一个 socket(比如 TCP 端口 22),而对应的服务进程(比如 sshd)此时还没启动。
当有客户端请求到来时,systemd 自动启动服务,并把已经就绪的 socket 交给它处理。

也就是说:

  • socket 先存在(由 systemd 管),服务可以后启动。

  • 首次请求时才真正启动服务(懒加载)。

3. 工作原理(步骤)

  1. systemd 读取两个 unit 文件:

    • xxx.socket → 定义要监听的 socket(端口/Unix socket)。

    • xxx.service → 定义服务如何启动。

  2. systemd 启动时,先激活 xxx.socket,监听端口。

    此时服务进程还没跑起来。

  3. 当有连接到来,systemd 立即启动 xxx.service,并把这个 socket 传递给它。

  4. 服务接手后,继续处理客户端连接。

(3)源码包安装的服务,对于ubantu20.04,

  • 安装源码包时,安装的内容通常是:

    • 可执行程序(比如 /usr/local/bin/mydaemon

    • 库文件(比如 /usr/local/lib/…

    • 配置文件模板(比如 /usr/local/etc/mydaemon.conf

    • 文档

👉 注意:源码编译安装不会自动生成 .service 文件
它只给你一个“可执行程序”,不会自动集成到 systemd。



所以对于ubantu来说,所有服务都让systemctl管理好了。自定义的服务写好放到对应的文件夹里面,重新加载服务,就可以让systemctl管理了。

3. 服务的安装位置

在 Ubuntu 20.04(以及大部分基于 systemd 的现代 Linux),服务本身服务管理配置的位置是分开的:


1. 服务程序本身(可执行文件)

这是软件包安装的真正二进制文件,位置取决于你怎么安装:

  • APT 安装的软件

    • 可执行文件通常在:

      • /usr/bin/ (一般命令行工具)

      • /usr/sbin/ (系统服务程序,如 sshd, nginx

    • 例如:

      /usr/sbin/sshd /usr/sbin/apache2

  • 源码编译安装的软件

    • 默认会安装到 /usr/local/bin//usr/local/sbin/

    • 例如:

      /usr/local/sbin/mydaemon


2. systemd 的服务单元文件(.service 文件,服务的启动脚本)

这是告诉 systemd 如何管理服务的配置文件(并不是程序本身)。

  • 系统自带/软件包提供的:

    • /lib/systemd/system/

    • 例如:

      /lib/systemd/system/ssh.service /lib/systemd/system/nginx.service

  • 管理员自己添加/修改的:

    • /etc/systemd/system/

    • 例如你写了一个自定义服务:

      /etc/systemd/system/mydaemon.service

👉 systemd 启动服务时,读的就是这些 .service 文件,然后执行里面的 ExecStart= 命令去启动真正的二进制。

3. 配置文件和数据

大部分服务还会带有配置文件和数据目录:

  • 配置文件:通常在 /etc/<服务名>

  • 日志文件:通常在 /var/log/<服务名>

  • 运行时数据:通常在 /var/lib/<服务名>

二、apt管理的服务的常用指令

  • 查看所有服务:

systemctl list-unit-files --type=service

  • 查看某个服务是否开机自启:

systemctl is-enabled ssh

  • 设置服务开机自启:

sudo systemctl enable ssh

  • 取消开机自启:

sudo systemctl disable ssh

  • 立即启动/停止服务:

sudo systemctl start ssh sudo systemctl stop ssh

查看服务状态

sudo systemctl status ufw

http://www.dtcms.com/a/360424.html

相关文章:

  • 【星闪】Hi2821 | SPI串行外设接口 + OLED显示屏驱动例程
  • 语音芯片3W输出唯创知音WTN6040FP、WT588F02BP-14S、WT588F04AP-14S
  • [回溯+堆优化]37. 解数独
  • Q1 Top IF 18.7 | 基于泛基因组揭示植物NLR进化
  • 高校心理教育辅导系统的设计与实现|基于SpringBoot高校心理教育辅导系统的设计与实现
  • 网格图--Day02--网格图DFS--面试题 16.19. 水域大小,LCS 03. 主题空间,463. 岛屿的周长
  • 技术总体方案设计思路
  • SAP报工与收货的区别(来自deepseek)
  • c++ 二维码、条形码开发实例
  • FFMPEG学习任务
  • 为什么计算机使用补码存储整数:补码的本质
  • 自定义AXI_PWM_v1.0——ZYNQ学习笔记15
  • Ultra Low Power Transceiver for Wireless Body Area Networks中文版
  • Makefile语句解析:头文件目录自动发现与包含标志生成
  • Day 01(01): Hadoop与大数据基石
  • RPC个人笔记(包含动态代理)
  • Qwen2.5-VL代码初步解读
  • 一个从7zip中分离出来的高压缩比文本压缩工具ppmd
  • 使用PowerShell监听本地端口
  • 多线程案例、线程池
  • QT6(QStandardItemModel和QTableView及自定义代理)
  • 第3章 乱码的前世今生-字符集和比较规则
  • 部署在windows的docker中的dify知识库存储位置
  • 常见线程池的创建方式及应用场景
  • Cookie、Session 和 JWT
  • 【K8s-Day 22】深入解析 Kubernetes Deployment:现代应用部署的基石与滚动更新的艺术
  • 服装管理软件与工厂计件系统精选
  • 【OpenGL】LearnOpenGL学习笔记18 - Uniform缓冲对象UBO
  • [每周一更]-(第158期):构建高性能数据库:MySQL 与 PostgreSQL 系统化问题管理与优化指南
  • XPlayer播放器APP:安卓平台上的全能视频播放器