Linux管理员必备——Linux系统服务(daemon)与systemctl管理服务(上)

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、系统服务的概念

2、为什么要管理系统服务

二、Linux系统服务(daemon)概述 

1、系统服务的定义和角色

2、核心系统服务与用户服务 

核心系统服务

用户服务

3、系统服务的启动与停止

1. Systemd

2. SysVinit

3. Upstart

4、传统init.d与SysVinit系统


一、引言

1、系统服务的概念

Linux系统服务(或称为守护进程、后台进程)是那些在Linux系统中运行以提供某种功能或服务的程序。这些服务通常在系统启动时自动启动,并在后台持续运行,等待请求或执行预定的任务。Linux系统服务涵盖了各种各样的功能,从网络管理、文件系统维护到用户认证等。

2、为什么要管理系统服务

1. 系统稳定性和性能

  • 资源管理:通过管理系统服务,可以确保只有必要的服务在运行,从而优化系统资源使用(CPU、内存、磁盘I/O等)。这有助于提高系统的整体性能和响应速度。
  • 避免冲突:一些服务可能会相互冲突,管理这些服务可以避免因冲突导致的系统不稳定。


2. 安全性

  • 减少攻击面:关闭不必要的服务可以减少潜在的攻击面,降低被攻击的风险。
  • 定期更新和修补:通过管理和监控服务,确保及时更新和修补服务中的安全漏洞,提升系统的安全性。


3. 功能和依赖管理

  • 启用必需的功能:某些应用程序和功能依赖特定的服务运行。管理服务确保所需服务运行,从而提供必要的功能。
  • 依赖关系管理:管理服务及其依赖关系,确保服务按照正确的顺序启动和停止,避免因依赖关系处理不当导致的服务失败。


4. 系统启动和关闭管理

  • 启动速度:通过管理启动时加载的服务,可以显著减少系统启动时间。启用并行启动服务的功能(如systemd),进一步提高启动效率。
  • 顺序和优先级:确保服务按照正确的顺序启动和停止,避免因依赖关系处理不当导致的启动和关闭问题。

二、Linux系统服务(daemon)概述 

1、系统服务的定义和角色

系统服务(System Services)在Linux和其他操作系统中扮演着至关重要的角色。这些服务通常是在操作系统启动时自动加载并在后台持续运行的程序,它们为操作系统提供了各种基本和高级功能。

定义


系统服务是操作系统中用于执行特定任务或提供特定功能的程序或进程。这些服务通常是后台进程,没有直接的用户界面,但可以通过命令行、系统管理工具或网络请求进行配置和管理。

角色

  1. 系统管理和维护
  2. 用户服务和认证
  3. 网络服务和通信
  4. 数据存储和管理
  5. 安全和保护
  6. 图形用户界面(GUI)支持
  7. 中间件和集成
  8. 时间同步和计划任务

2、核心系统服务与用户服务 

在Linux操作系统中,系统服务可以分为核心系统服务用户服务两大类。每一类服务都在系统中扮演着不同的角色,并具有不同的功能和特性。

核心系统服务


核心系统服务 是指那些对系统的基本运行和管理至关重要的服务。这些服务通常在系统启动时自动加载,并且贯穿整个系统的运行周期。

1. 启动和初始化服务

  • systemd / SysVinit:负责系统启动过程的初始化服务管理,启动其他所有服务。
  • udev:设备管理服务,处理设备的动态创建和删除。


2. 系统日志服务

  • rsyslog / syslog-ng / journald:收集、存储和管理系统日志信息,帮助监控和排除故障。


3. 时间同步服务

  • ntpd / chronyd:提供网络时间协议(NTP)服务,确保系统时钟的准确性。


4. 网络服务

  • NetworkManager / systemd-networkd:管理网络连接和网络配置。
  • firewalld / iptables:防火墙服务,提供网络流量控制和安全防护。


5. 设备和文件系统管理服务

  • LVM(Logical Volume Manager):管理逻辑卷和存储设备。
  • autofs:自动挂载文件系统。


6. 认证和授权服务

  • sshd:提供安全的远程登录服务。
  • pam(Pluggable Authentication Modules):提供灵活的认证管理机制。


用户服务


用户服务 是指那些主要为用户应用和功能提供支持的服务。它们通常在用户需要时启动,可以通过用户的配置和需求进行调整。

1. 应用服务

  • httpd / nginx:Web服务器,提供HTTP服务。
  • mysqld / postgresql:数据库服务,提供数据存储和管理功能。

2. 邮件服务

  • postfix / sendmail:邮件传输代理,管理电子邮件的发送和接收。
  • dovecot / courier:邮件投递代理,管理电子邮件的存储和访问。


3. 文件共享服务

  • smbd / nmbd(Samba):提供Windows文件共享服务。
  • nfsd:网络文件系统(NFS)服务,允许文件系统在网络上共享。


4. 打印服务

  • cupsd:通用Unix打印系统(CUPS),管理打印任务和打印机配置。


5. 消息队列服务

  • rabbitmq / activemq:提供消息队列服务,支持分布式系统中的消息传递。


6. 多媒体和图形服务

  • pulseaudio / pipewire:音频服务,管理音频设备和流。
  • Xorg / Wayland:图形显示服务,提供图形用户界面支持。


区别与联系

  1. 依赖性:核心系统服务是系统稳定运行的基础,通常其他服务和应用依赖于这些核心服务的正常运行。而用户服务则是为用户需求和应用程序提供支持,不同用户和应用程序可能需要不同的用户服务。
  2. 启动方式:核心系统服务通常在系统启动时自动启动,而用户服务可以根据需要手动启动或由特定的应用程序触发。
  3. 配置和管理:核心系统服务的配置较为固定且关键,任何变动需要谨慎处理。用户服务的配置则相对灵活,可以根据用户需求进行调整。

  

3、系统服务的启动与停止

在Linux操作系统中,系统服务的启动与停止是系统管理的重要部分。不同的初始化系统(如SysVinit、Upstart和systemd)使用不同的方法来管理服务。以下是关于如何在这些系统中启动和停止服务的详细介绍。

1. Systemd


systemd 是现代Linux系统中最常用的初始化系统和服务管理器。它通过并行启动服务来提高系统启动速度,并提供了丰富的功能集,如依赖关系管理、日志管理等。

启动服务

systemctl start [service_name]


停止服务

systemctl stop [service_name]


重启服务

systemctl restart [service_name]

2. SysVinit


SysVinit 是传统的初始化系统,通过运行级别(runlevel)脚本来管理服务。服务脚本通常位于 /etc/init.d/ 目录下。

启动服务

service [service_name] start


停止服务

service [service_name] stop


重启服务

service [service_name] restart


3. Upstart


Upstart 是由Ubuntu开发的事件驱动的初始化系统,用于替代SysVinit。在Upstart中,服务脚本通常位于 /etc/init/ 目录下,并以 .conf 结尾。

启动服务

start [service_name]


停止服务

stop [service_name]


重启服务
 

restart [service_name]

4、传统init.d与SysVinit系统

传统的 init.d 和 SysVinit 是早期Unix和Linux系统中用来启动和管理服务的系统。这两个系统在设计上是紧密相关的,init.d 是 SysVinit 的实现机制之一。

SysVinit

SysVinit(System V Initialization)是早期Unix系统的初始化系统,它定义了一种基于运行级别(runlevel)的服务管理机制。每个运行级别对应一组服务的启动和停止。

运行级别(Runlevels)

  • 0:关机
  • 1:单用户模式(用于维护)
  • 2:多用户模式,无网络服务
  • 3:多用户模式,有网络服务
  • 4:用户自定义
  • 5:多用户模式,有图形界面
  • 6:重启

在系统启动过程中,/sbin/init 是第一个启动的进程,它读取 /etc/inittab 文件,根据指定的运行级别来启动相应的服务。

SysVinit的工作流程

  1. 初始化:系统启动时,init 进程读取 /etc/inittab 文件,确定默认的运行级别。
  2. 运行级别切换:根据运行级别,init 调用相应的脚本,这些脚本位于 /etc/rc.d/ 或 /etc/init.d/ 目录下。
  3. 启动和停止服务:在每个运行级别目录(如 /etc/rc.d/rc3.d/)下,有指向实际服务脚本的符号链接,符号链接以 S 或 K 开头,表示启动(Start)或停止(Kill)服务。

init.d

init.d 是 SysVinit 系统中管理启动脚本的目录。每个服务对应一个脚本,通常位于 /etc/init.d/ 目录下。

init.d脚本

这些脚本通常接受 start、stop、restart 和 status 等参数,用于控制服务的行为。

#!/bin/sh
# /etc/init.d/example

case "$1" in
    start)
        echo "Starting example service"
        # 启动服务的命令
        ;;
    stop)
        echo "Stopping example service"
        # 停止服务的命令
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    status)
        # 检查服务状态的命令
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0

 💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

  • 80
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明跟你说过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值