在上一篇文章《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. P5057 【[CQOI2006]简单题】

    洛谷P5057[CQOI2006]简单题 差分 树状数组基本操作不说了,主要想记录一下异或下的差分 a数组为每一位的真实值(假设\(a[0]=0\)),t为差分后的数组 则\(t[i]=a[i]\)^ ...

  2. MySQL 索引、视图

    1.索引 什么是索引 一个索引是存储在表中的数据结构,索引在表的列名上创建.索引中包含了一个列的值,这些值保存在一个数据结构中 索引优缺点 索引大大提高了查询速度 会降低更新表的速度,如对表进行INS ...

  3. 设置 Linux 支持中文

    1.首先在 command 输入 locale,可以看到 Linux 下默认的系统语言的是英文 2.vim ~/.bashrc 打开这个文件,该文件夹相当于系统配置文件 3.打开后,将后三行命令输入到 ...

  4. Flutter 打包Android APK 笔记与事项

    获取一个KEY 首先要获取 你的 打包应用的一个 key ,这一步其实和 在AndroidStudio 上打包 APK 一样,都是要注册一个本地的 key,key 其实也就是 jks文件啦. 如果已经 ...

  5. Composition API

    介绍 Composition API的主要思想是,我们将它们定义为从新的 setup 函数返回的JavaScript变量,而不是将组件的功能(例如state.method.computed等)定义为对 ...

  6. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  7. jQuery如何使用键盘事件,按住空格键完成进度条效果,并终止键盘事件

    jQuery使用键盘事件 keyup:键盘抬起时 keydown:键盘按下时 keypress:键盘按住时 运行下列代码,可以看效果 $(document).keyup(function () { c ...

  8. P2816 宋荣子搭积木

    描述:https://www.luogu.com.cn/problem/P2816 saruka非常喜欢搭积木,他一共有n块积木.而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列.说过s ...

  9. XSS检测总结

    XSS漏洞介绍     跨站脚本XSS是一种针对网站应用程序的安全漏洞攻击技术.恶意攻击者往web页面插入恶意的Script代码,当用于浏览该页时,嵌入web中的恶意代码就会被执行,从而达到恶意攻击用 ...

  10. hadoop问题

    如果启动hadoop集群时,无法启动datanode,则可以集群所有节点下dfs.datanode.data.dir的配置值所指示的路径下清空所有文件(夹),然后 hadoop namenode -f ...