zoukankan      html  css  js  c++  java
  • 在 Linux 系统中如何管理 systemd 服务

    在上一篇文章《Linux的运行级别与目标》中,我介绍过 Linux 用 systemd 来取代 init 作为系统的初始化进程。尽管这一改变引来了很多争议,但大多数发行版,包括 RedHat、Fedora、CentOS、Debian、Ubuntu、openSUSE、Arch 等等都已经做出了调整。不管是哪一个发行版本,systemd 都用标准的 systemctl 工具来进行管理,本文将对如何使用 systemctl 做出详细讲解。  


               

    (1)查看你的系统有没有使用 systemd

    如果你不确定你的 Linux 版本有没有使用 systemd,可以用下面的命令来检查一下

    #systemctl --version

    比如我的系统返回结果是 systemd 219。如果系统没有使用 systemd 的话,应该找不到 systemctl 命令。


    (2)验证一下系统进程的层级关系

    systemd 是系统的初始化进程,所以它应该是所有其他进程的父进程,我们用 pstree 命令来验证一下

    #pstree


    (3)分析系统启动性能

    查看系统启动时间可以使用 system-analyze 命令,默认是查看内核、initrd 和用户空间的启动时间。

    #system-analyze

    如果查看每个服务的启动耗时可以用 system-analyze blame

    #system-analyze blame

    返回结果是按照耗时长短来排序的,最上面的就是耗时最长的服务。


    (4)查看单元(unit)

    systemd 是通过单元来实现系统管理的。单元又分成很多种,比如服务单元(Service Unit)、挂载单元(Mount Unit)、设备单元(Device Unit)、套接字单元等(Socket Unit)。每一个单元都有相应的配置文件,主要存放在 /usr/lib/systemd/system 和 /etc/systemd/system 目录中。我们用 systemctl 命令来管理这些单元。


    查看系统中所有的单元可以用

    #systemctl list-unit-files

    可以看到里边有很多停用的单元,如果只想看正在运行的单元可以使用命令

    #systemctl list-units


    (5)管理服务

    之前版本的 Linux 是通过 service 和 chkconfig 来管理服务。现在我们应该主要用 systemctl 来对服务进行管理。


    如果想查看系统当前所有的服务,包括所有状态的服务,可以用命令

    #systemctl list-unit-files --type=service

    如果想查看某个服务的当前状态,可以用

    #systemctl status 服务名

    比如我们想看一下当前 sshd 服务的状态,结果显示:

    • Loaded: loaded (/usr/lib/systemd/system/sshd.service 表示服务被加载,以及它的单元配置文件路径

    • enabled 表示该服务开机会自动启动

    • vendor preset: enabled 表示该服务在系统中默认预设就是开机自动启动

    • Active: active (running) since 三 2020-05-27 08:50:15 CST; 8h ago 表示该服务当前正在运行,以及它的运行时间

    • Main PID: 1005 (sshd) 主要给出了 PID 的信息


    如果想启动/停止/重启/重新加载某个服务,可以用

    #systemctl start/stop/restart/reload 服务名


    如果想查看服务是否被设为开机自动启用

    #systemctl is-enabled 服务名  

    设置服务设为开机自动启用

    #systemctl enable 服务名     

    设置服务设开机不自动启用

    #systemctl disable 服务名    


    除了以上这些,systemd 还有很多其他管理功能,比如关机、重启、休眠等功能,你也可以通过编写你自己的单元文件来创建新的服务,在我之前的文章《Linux的运行等级与目标》中还介绍过通过目标(target)来管理系统运行级别。systemd 主要是通过 systemctl 来进行管理,它集之前的 service 和 chkconfig 工具于一体,功能非常强大,感兴趣的同学可以通过手册来再更深入地学习。


    推荐阅读:

    《Linux的运行级别与目标》

    《软链接 vs. 硬链接》

    《Linux 目录详解》

    《虚拟机安装 Linux 最完整攻略》

    《Xshell 与 Xftp 的安装与使用》

    《Linux,Unix,GNU 到底有什么样的渊源?》

     



     


    - The End -


  • 相关阅读:
    【算法笔记】多线程斐波那契数列
    RAID技术详解
    Mysql 语句汇总(性能篇)
    JS 网页打印解决方案
    MyEclipse修改
    几个需要学习的点和技术
    MyEclipse配色字体等配置的解决方案
    使用hibernate 分表做增删改查
    Web平台开发流程以及规范
    easyui使用总结
  • 原文地址:https://www.cnblogs.com/jfzhu/p/12978109.html
Copyright © 2011-2022 走看看