systemd学习

整理systemd相关学习,部分转载自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

概述

systemd主要用于替代原有的init启动方式,相对init提供了更为全面、强大的系统服务监控、管理和维护功能,摒弃了init仅支持串行执行、功能单一(执行脚本)的缺点。但一定程度上被认为破坏了unix的KISS的设计哲学。

主要命令:systemctl,在sudo下执行

架构图:


主要作用

systemd管理所有系统资源,资源抽象为unit:

  • 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:定时器

启动unit:systemctl xxx start,停止:……

启动和停止等时候会对依赖进行相应的处理(这也是为什么要用这个命令启动一些服务,否则一些依赖无法满足,有些服务就会启动失败。)

配置文件

systemd配置文件一般在/etc/systemd/system/,里面的文件一般都是链接,真正的文件一般在/usr/lib/systemd/system/。系统启动时候回自动从这里读取配置。systemctl enable在两者之间建立链接关系(所以一直用这个命令来设置开机启动)。

服务配置文件修改后,需要调用systemctl daemon-reload重载配置,并且重新启动所需服务。

配置文件格式:

$ systemctl cat atd.service

[Unit]
Description=ATD daemon

[Service]
Type=forking
ExecStart=/usr/bin/atd

[Install]
WantedBy=multi-user.target

一般都是分为多个区块,[]内的字符串即为区块名称。然后下面就是一堆kv值作为配置值。

Unit区块一般用于定义该unit的元数据,以及与其他unit的联系和依赖。

Install区块用来定义如何启动,以及是否开机启动,通常是最后一个区块。

对于Service Unit,还有Service区块配置服务命令、服务元数据、启动指令等信息。

完全清单见:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

Target

一个Unit组,可以看做是对一个系统状态的定义(一组unit),启动到某个target就像是启动到某种状态。

可以用systemctl list-unit-files --type=target命令查看当前的所有targets。

多个Target可以共存,并不互斥。可以通过形如systemctl set-default multi-user.target的命令设置开机启动的默认target。可以通过这种方式实现开机自启设置。

日志管理

systemd所有操作的日志由journalctl统一管理。使用journalctl命令可以查看。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值