• 系统服务管理-Systemd


    在这里插入图片描述

    一、简介

    1.1 概述

      Systemctl 是一个 systemd 工具,主要负责控制 systemd 系统和服务管理器。Systemd 是一个系统管理守护进程、工具和库的集合,其功能是用于集中管理和配置类 UNIX 系统。在 Linux 生态系统中,Systemd 被部署到了大多数的标准 Linux 发行版中,只有为数不多的几个发行版尚未部署。systemd 所管理的所有系统资源都称作Unit,通过systemd命令集可以方便的对这些Unit进行管理,比如systemctl、hostnamectl、timedatectl、localctl等命令。

    1.2 安装及基础操作

      Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。systemctl是 Systemd 的主命令,通过其可以检查系统上是否安装了Systemd 以及当前安装的 Systemd 的版本是什么,执行如下命令:

    [root@centos-linux-8 ~]# systemctl --version
    systemd 239 (239-51.el8_5.2)
    +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy
    
    • 1
    • 2
    • 3

    从上面的例子可以清楚地看出,我们已经安装了systemd 239版本。

    二、Systemd 基本使用

    2.1 systemctl

    systemctl是 Systemd 的主命令,用于管理系统。

    # 重启系统
    sudo systemctl reboot
    
    • 1
    • 2

    在实际工作中,systemctl 更多用于控制和管理服务,例如启动、停止、重新加载、重启服务、检查服务状态、启用/禁用服务等,如下表所示:

    命令说明
    systemctl is-active serviceName.service查询服务是否开机启动
    systemctl enable serviceName.service开机运行服务
    systemctl disable serviceName.service取消开机运行
    systemctl start serviceName.service启动服务
    systemctl stop serviceName.service停止服务
    systemctl restart serviceName.service如果服务没有启动,就启动它
    systemctl reload serviceName.service重新加载服务配置文件
    systemctl status serviceName.service查询服务运行状态
    systemctl list-unit-files列出所有可用的服务
    systemctl list-units列出所有运行服务
    systemctl --failed显示启动失败的服务

    serviceName.service代表某服务的名称,而且.service可以省略不写

    2.2 systemd-analyze

    systemd-analyze命令用于查看启动耗时。

    # 查看启动耗时
    systemd-analyze                                                                                       
    
    # 查看每个服务的启动耗时
    systemd-analyze blame
    
    # 显示瀑布状的启动过程流
    systemd-analyze critical-chain
    
    # 显示指定服务的启动流
    systemd-analyze critical-chain atd.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.3 hostnamectl

    hostnamectl命令用于查看当前主机的信息。

    [root@centos-linux-8 ~]# hostnamectl
       Static hostname: centos-linux-8
       Pretty hostname: Centos Linux 8
             Icon name: computer-vm
               Chassis: vm
            Machine ID: 25bc1e6a428dc54b91330ec762d168bb
               Boot ID: 2be9f5a147ae444cbaef6b92080b09e5
        Virtualization: kvm
      Operating System: CentOS Linux 8
           CPE OS Name: cpe:/o:centos:centos:8
                Kernel: Linux 4.18.0-348.7.1.el8_5.x86_64
          Architecture: x86-64
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.4 localectl

    localectl命令用于查看本地化设置。

    [root@centos-linux-8 ~]# localectl
       System Locale: LANG=zh_CN.utf8
           VC Keymap: cn
          X11 Layout: cn
    
    • 1
    • 2
    • 3
    • 4

    2.5 timedatectl

    timedatectl命令用于查看当前时区设置,也可以通过命令:timedatectl list-timezones 获取所有可用的时区。

    [root@centos-linux-8 ~]# timedatectl
                   Local time: 日 2022-08-28 22:06:45 CST
               Universal time: 日 2022-08-28 14:06:45 UTC
                     RTC time: 日 2022-08-28 14:06:44
                    Time zone: Asia/Shanghai (CST, +0800)
    System clock synchronized: yes
                  NTP service: active
              RTC in local TZ: no
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.6 loginctl

    loginctl命令用于查看当前登录的用户。

    # 查看当前登录的用户
    [root@centos-linux-8 ~]# loginctl
    SESSION UID USER SEAT  TTY 
          4   0 root seat0 tty2
          6   0 root           
    
    2 sessions listed.
    
    # 当前登录用户
    [root@centos-linux-8 ~]# loginctl list-users
    UID USER
      0 root
    
    1 users listed.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三、附录

    3.1 服务状态

    这里我们可以先试用下面这个指令查看一下atd服务的当前状态,指令和结果如下:

    在这里插入图片描述

    看到高亮的那个没有,这就是当前服务的状态。那么服务有哪几种常见的状态呢,这里列举说明一下。

    状态说明
    active(running)正有一个或多个程序正在系统中执行
    active(exited)仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行
    active(waiting)正在执行当中,不过还需要等待其他的事件才能继续处理
    inactive这个服务目前没有运行
    dead程序已经清除

    上面是运行结果中,还圈出了一个地方,那个是啥?那个其实是这只服务程序的启动状态,也分为一下几种状态。

    状态说明
    enabled服务将在开机时被执行
    disabled服务在开机时不会被执行
    static服务不会自启动,但可能会被其他服务来唤醒
    mask服务无论如何都无法被启动,因为已经被强制注销

    3.2 systemctl 配置文件

      对于支持 systemd 的服务来说,在其安装的时候,会自动的在 /usr/lib/systemd/system 目录添加一个配置文件。例如 mysql 服务的配置文件 mysqld.service就是位于此目录下,其他的服务也同样位于此目录下,只不过具体的文件名不一样。服务是根据它的配置来启动和停止的,我们使用编辑器或者使用 systemctl cat 服务名 查看服务的配置文件, 下面我们以 sshd 服务的配置文件来说明。

    [root@centos-linux-8 ~]# systemctl cat sshd
    # /usr/lib/systemd/system/sshd.service
    [Unit]
    Description=OpenSSH server daemon
    Documentation=man:sshd(8) man:sshd_config(5)
    After=network.target sshd-keygen.target
    Wants=sshd-keygen.target
    
    [Service]
    Type=notify
    EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
    EnvironmentFile=-/etc/sysconfig/sshd
    ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    JS——数字字符串的比较逻辑分析
    HttpServletResponse 类
    二、BurpSuite Proxy代理
    从功能测试到掌握自动化,四个月时间我是如何从点工进入互联网大厂
    Apache DolphinScheduler 如何实现自动化打包+单机/集群部署?
    数字前面填充0工具类
    深度学习零基础学习之路——第一章 环境软件配置
    基于javaweb的医院管理系统(java+springboot+mybatis+vue+mysql)
    多线程常识相关
    卷积神经网络(CNN)
  • 原文地址:https://blog.csdn.net/duleilewuhen/article/details/126575845