前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 温习(四): Systemd 分析与应用

Linux 温习(四): Systemd 分析与应用

作者头像
陈大剩博客
发布2023-02-17 17:13:29
6450
发布2023-02-17 17:13:29
举报
文章被收录于专栏:陈大剩博客专栏

进程

一个运行起来的程序被为 进程,进程的英语是 process

特殊的进程

这些进程不与任何终端关联,并且无论用户的身份如何,都在后台运行。这些进程的父进程是 PID(进程号)为 1 的进程,PID 为 1 的进程只在系统关闭时才会被销毁,这些进程会在后台一直运行。

守护进程

在 Unix / Linux 的世界中,我们将这类进程称之为 daemon (守护进程),daemon 是古希腊神话中的半神半人精灵、守护神的意思。守护进程也被称为service(服务),服务器软件大多都是以守护进程的形式运行的。

守护进程的名字通常会在最后有一个 d,表示 daemon,例如:systemd , httpd , smbd,等等

Windows 中的服务

在 Windows 的世界中,这样的进程也被称为service(服务)

Linux 操作系统启动的开机过程

新旧初始化进程服务

  • 旧版:System V
  • 新版:Systemd

新旧服务对比

systemd 命令

System V 命令

作用

systemctl start toto

service toto start

启动服务

systemctl stop toto

service toto stop

停止服务

systemctl restart toto

service toto restart

重启服务

systemctl status toto

service toto status

查看服务状态

systemctl reload toto

service toto reload

重载配置文件(不停止服务)

systemctl enable toto

chkconfig toto on

开机自动启动服务

systemctl disable toto

chkconfig toto off

开机不自动启动服务

systemctl is-enabled toto

chkconfig toto

查看服务是否开机自动启动

systemctl list-unit-files –type=service

chkconfig –list

查看各个级别下服务的启动和禁用情况

用systemd管理系统服务

Systemd 是几乎所有最新的 Linux 发行版采用的初始化系统,Systemd 的 PID(进程号)是 1,其他进程都是它的子进程,Systemd并不是一个命令,它包含了一组命令,Systemd 是基于事件的,Systemd 可以使进程并行启动System V 是串行启动进程的,只有前一个进程启动完,才会启动下一个进程。Systemd 甚至可以重新启动因错误而停止的进程管理任务的计划,系统日志,外设,等。

管理进程的启动和停止

Systemd 提供了 systemctl 命令,使得我们可以管理 unit(单元),对 Systemd 来说,unit 泛指它可以操作的任何对象,unit 可以有不同的类型:服务,挂载,外设,等等,守护进程属于 service(服务)类型。

  • Service unit:系统服务
  • Target unit:多个 Unit 构成的一个组
  • Device Unit:硬件设备
  • Mount Unit:文件系统的挂载点
  • Automount Unit:自动挂载点
  • Path Unit:文件或路径
  • Scope Unit:不是由 Systemd 启动的外部进程
  • Slice Unit:进程组
  • Snapshot Unit:Systemd 快照,可以切回某个快照
  • Socket Unit:进程间通信的 socket
  • Swap Unit:swap 文件
  • Timer Unit:定时器
代码语言:javascript
复制
# 列出所有的活动单元
> systemctl

# 列出所有的服务是 service 的运行单元
> systemctl list-units --type=service

# 列出所有的服务文件 
> ls /usr/lib/systemd/system

# 显示服务的文件内容
> systemctl cat nginx

# 编辑服务文件(生产副本)
> systemctl edit nginx

# 编辑服务文件(编辑源文件)
> systemctl edit --full nginx

# 重载文件
> systemctl daemon-reload

使用 target , System V 的运行级别的演进

使用 target (目标)

  • System V使用 Run Level(运行级别)来管理不同的进
  • systemd 用 target 来替换了 System V 的运行级别
  • target 是指“目标”,简单来说是多个 unit 构成的一个组

systemd 的 target 名称

System V运行级别

作用

poweroff.target

0

关机

rescue.target

1

单用户模式

multi-user.target

2

等同于级别3

multi-user.target

3

多用户的命令行界面

multi-user.target

4

等同于级别 3

graphical.target

5

多用户的图形界面

reboot.target

6

重启

emergency.target

emergency

紧急 Shell

Systemd 可以存在多个活动的 target,例如 swap.target,对应于可以被激活或不能被激活的系统功能,例如:graphical.target 对应于其他 target 的依赖。

代码语言:javascript
复制
# 列出所有 target
> systemctl list-units --type=target --all

# 列出 rescue.target 依赖关系
> systemctl list-dependencies rescue.target

# 列出默认的 target
> systemctl get-default

# 切换其他  rescue.target(单用户) 模式
> systemctl isolate rescue.target

# 设置默认的 target
> systemctl set-defalut rescue.target

使用 journalctl 命令管理日志

默认地,journalctl 按时间顺序显示由systemd管理的所有日志

代码语言:javascript
复制
# 按时间顺序显示所有日志
> journalctl

# 显示自上次启动以来所有的日志
> journalctl -b

# 显示自上次启动以来内核日志
> journalctl -b -k

# 查看 nginx 日志
> journalctl -u nginx 

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

代码语言:javascript
复制
# 启动总耗时
> systemd-analyze

# 每个 unit 总耗时
> systemd-analyze blame

# 禁止服务启动(手动启动也无效)
> systemctl mask nginx

# 解除禁止服务启动 
> systemctl unmask nginx

请慎用 mask 这个子命令,因为它是一个增强版本的 disable,会阻止了所有激活这个 unit 的行为,包括启用和手动激活。 mask是英语“掩盖,遮蔽”的意思。

手动配置

总结

  • systemd 管理 unit(单元),unit 可以有不同类型
  • unit 的管理由 systemctl 命令完成
  • systemd 的target取代了System V的运行级别
  • 可以通过 journalctl 命令来管理系统日志
  • 可以通过systemd-analyze命令来查看启动耗时

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进程
    • 特殊的进程
      • 守护进程
        • Windows 中的服务
      • Linux 操作系统启动的开机过程
        • 新旧初始化进程服务
          • 新旧服务对比
          • 用systemd管理系统服务
            • 管理进程的启动和停止
            • 使用 target , System V 的运行级别的演进
              • 使用 target (目标)
                • 使用 journalctl 命令管理日志
                  • 使用 systemd-analyze 命令查看启动耗时
                  • 手动配置
                    • 总结
                    • 参考
                    相关产品与服务
                    云服务器
                    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档