『运维备忘录』之 Systemd 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。

今天我们要讲的是 Systemd 


 

一、简介

『运维备忘录』之 Systemd 命令详解_第1张图片

systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序。功能包括:支持并行化任务;同时采用 socket 式与 D-Bus 总线式启用服务;按需启动守护进程(daemon);利用 Linux 的 cgroups 监视进程;支持快照和系统恢复;维护挂载点和自动挂载点;各服务间基于依赖关系进行精密控制。

systemd 支持 SysV 和 LSB 初始脚本,可以替代 sysvinit。除此之外,功能还包括日志进程、控制基础系统配置,维护登陆用户列表以及系统账户、运行时目录和设置,可以运行容器和虚拟机,可以简单的管理网络配置、网络时间同步、日志转发和名称解析等。

二、基本用法

systemctl list-dependencies  # 显示单元的依赖关系
systemctl list-sockets       # 列出套接字和激活的内容
systemctl list-jobs          # 查看活动的 systemd 作业
systemctl list-unit-files    # 查看单元文件及其状态
systemctl list-units         # 显示单位是否已加载/活动
systemctl get-default        # 列出默认目标(如运行级别)
systemctl reboot             # 重启系统
systemctl poweroff           # 关闭系统
systemctl emergency          # 进入紧急模式
systemctl default            # 返回默认目标

systemctl stop service             # 停止正在运行的服务
systemctl start service            # 启动服务
systemctl restart service          # 重新启动正在运行的服务
systemctl reload service           # 重新加载服务中的所有配置文件
systemctl daemon-reload            # 必须运行以重新加载更改的单元文件
systemctl status                   # 查看服务是否正在运行/启用
systemctl --failed                 # 显示未能运行的服务
systemctl reset-failed             # 将任何单位从失败状态重置
systemctl enable service           # 使服务在启动时启动
systemctl disable service          # 禁用服务 - 不会在启动时启动
systemctl show service             # 显示服务(或其他单元)的属性
systemctl edit service             # 创建片段以放入单元文件
systemctl edit --full service      # 编辑整个单元文件以进行服务
systemctl -H host status network   # 远程运行任何 systemctl 命令

journalctl	                       # 显示所有收集的日志消息
journalctl -u network.service	   # 查看网络服务消息
journalctl -f	                   # 关注出现的消息
journalctl -k	                   # 仅显示内核消息

三、SysVinit 到 Systemd

Linux服务启动流程取决于所使用的初始化系统,现代Linux发行版中的两个主要初始化系统是systemd和SysVinit。

systemd是红帽7版本(其他如红旗7等相对应版本)及以上版本所普遍使用;SysVinit是7版本以下所普遍使用。顾名思义,systemd被设计用来改进sysvinit的缺点,所谓的升级加强版。systemd的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd尽可能减少对shell脚本的依赖。传统sysvinit使用inittab来决定运行哪些shell脚本,大量使用shell脚本被认为是效率低下无法并行的原因。

Systemd和SysVinit命令对比:

SysVinit Systemd 说明
service SERVICE_NAME start systemctl start SERVICE_NAME 用于启动服务(不重启持久)
service SERVICE_NAME stop systemctl stop SERVICE_NAME 用于停止服务(不永久重启)
service SERVICE_NAME restart systemctl restart SERVICE_NAME 用于停止然后启动服务
service SERVICE_NAME reload systemctl reload SERVICE_NAME 重新加载配置文件而不中断挂起的操作
service SERVICE_NAME condrestart systemctl condrestart SERVICE_NAME 如果服务已在运行,则重新启动
service SERVICE_NAME status systemctl status SERVICE_NAME 判断服务当前是否正在运行
chkconfig SERVICE_NAME on systemctl enable SERVICE_NAME 打开服务,以便在下次启动时启动,或其他触发器
chkconfig SERVICE_NAME off systemctl disable SERVICE_NAME 为下次重新启动或任何其他触发器关闭服务
chkconfig SERVICE_NAME systemctl is-enabled SERVICE_NAME 用于检查服务是否配置为在当前环境中启动
chkconfig –list systemctl list-unit-files –type=service (or)
ls /etc/systemd/system/*.wants/
打印一个服务表,列出每个配置的运行级别打开或关闭
chkconfig –list | grep 5:on systemctl list-dependencies graphical.target 打印启动到图形模式时将启动的服务表
chkconfig SERVICE_NAME –list

ls /etc/systemd/system/*.wants/

SERVICE_NAME.service

用于列出此服务配置为打开或关闭的级别
chkconfig SERVICE_NAME –add systemctl daemon-reload 在创建新服务文件或修改任何配置时使用

Systemd和SysVinit目标运行级别对比:

SysVinit Systemd 说明
0 runlevel0.target, poweroff.target 停止系统
1, s, single runlevel1.target, rescue.target 单用户模式
2, 4 runlevel2.target, runlevel4.target, multi-user.target 用户定义/站点特定的运行级别。 默认情况下,与 3 相同
3 runlevel3.target, multi-user.target 多用户,非图形。 用户通常可以通过多个控制台或通过网络登录
5 runlevel5.target, graphical.target 多用户,图形。 通常具有运行级别 3 的所有服务以及图形登录
6 runlevel6.target, reboot.target 重启
emergency emergency.target 应急外壳

资料参考:https://systemd.io/ 

你可能感兴趣的:(运维备忘录,运维,服务器,linux)