在上一篇文章《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 -

在 Linux 系统中如何管理 systemd 服务的更多相关文章

  1. 为什么linux系统中init被systemd替换了

    Linux init 进程是系统初始化进程,比较古老了,所以出现了一些新的替代方案: Upstart – A init replacement daemon implemented in Ubuntu ...

  2. 『学了就忘』Linux服务管理 — 75、Linux系统中的服务

    目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...

  3. 用户管理 之 Linux 系统中的超级权限的控制

    在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...

  4. 使用Linux系统中的SSH服务

    使用Linux系统中的SSH服务 1.SSH服务应用场景 ① 可以实现对文件的上传与下载 ② 实现远程管理Linux 2.安装SSH服务器 服 务:sshd 位 置:光盘2 软 件:openssh-s ...

  5. 用户管理 之 在Linux系统中,批量添加用户的操作流程

    一.阅读此文件您需要掌握的基础知识: <Linux 用户(user)和用户组(group)管理概述><用户(user)和用户组(group)配置文件详解><Linux 用 ...

  6. 使用mybatis assembly插件打成tar包,在linux系统中运行服务

    使用mybatis assembly插件打成tar包,在linux系统中运行服务 assembly插件插件地址: 链接:https://pan.baidu.com/s/1i6bWPxF 密码:gad5 ...

  7. 在RedHat Linux系统中安装和配置snmp服务

    检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...

  8. 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令

    安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...

  9. 【Linux】Linux系统中的权限详解

    我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...

随机推荐

  1. 图论--2-SAT--poj 3678-Katu Puzzle(模板题)

    Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a ...

  2. bzoj4173 数学

    bzoj4173 数学 欧拉\(\varphi\)函数,变形还是很巧妙的 求: \[\varphi(n)\cdot\varphi(m)\cdot\sum_{n\bmod k+m\bmod k\ge k ...

  3. 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

    [SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...

  4. Codeforces Round #577 (Div. 2) D. Treasure Hunting

    Codeforces Round #577 (Div. 2)  D. Treasure Hunting 这个一场div2 前面三题特别简单,这个D题的dp还是比较难的,不过题目告诉你了只能往上走,所以 ...

  5. CC2530ADC转换

    一.ADC简介 ADC支持 14 位的模拟数字转换,具有多达12 位的 ENOB(有效数字位).它包括一个模拟多路转换器,具有多达8 个各自可配置的通道,以及一个参考电压发生器.转换结果通过DMA写入 ...

  6. 【Hadoop离线基础总结】MapReduce增强(下)

    MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...

  7. 局域网ip地址扫描_v1版本

    局域网ip地址扫描 工作中,我们有时需要对局域网中ip地址使用情况进行统计.可以使用shell脚本进行扫. 脚本功能: 在线使用IP写入list_online.txt文件 未在线IP写入list_of ...

  8. JDBC07 事务

    事务 事务基本概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元(比如:银行中,对账户的操作和日志的记录是一组事务) 事务开始于: -连接到数据库上,并执行一条DML ...

  9. 世界这么大,Python 也想去看看

    把时间线拉回到 2015 年 4 月 13 日,一位河南省实验中学的心里老师在辞职信上写下了「世界那么大,我想去看看」这句话,后来爆红网络,我想这位心里老师当时写这句话的时候肯定没想到这句只有十个字的 ...

  10. 07JAVA基础面向对象-继承/多态

    一.继承 1.概念 子类的共性 重用现有类并在此基础上进行扩展 public class 子类 extends 父类{} 2.继承中的成员访问 成员变量 成员方法 局部->本类中成员变量-> ...