Systemd

背景

自从服务器换成了 CentOS7 以后,经常使用 systemctl 开头的命令,比如启动 Nginx 等服务的时候。但是并没有深入了解该命令,经常在碰到启动失败的时候不知道如何是好。

目标

  • systemd 是什么;
  • 为什么使用 systemd;
  • systemctl 和 systemd 的关系;
  • systemd 和 systemctl 的常用命令;

Systemd 是什么

以下为维基百科的定义:

systemd 是 Linux 操作系统下的一套中央化系统及设置管理程序(init 软件),包括守护进程、程序库和应用软件,由 Lennart Poettering 带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低 Shell 的系统开销的效果,最终代替现在常用的System V 与 BSD 风格 init 程序。

通过以上定义可以看出,systems 是:

  • 一套系统和服务管理器;
  • 包含守护进程程序库应用软件

为什么使用 systemd

systemd 出现以前

systemd 出现以前,一般都使用 Init 来启动服务。以下为 Init 的定义:

init(为英语:initialization的简写)是 Unix 和 类Unix 系统中用来产生其它所有进程的程序。它以守护进程的方式存在,其进程号为1。Linux系统在开机时加载Linux内核后,便由Linux内核加载init程序,由init程序完成余下的开机过程,比如加载运行级别,加载服务,引导Shell/图形化界面等等。

但在使用的过程中,Init 有两个比较大的缺陷:

  • 启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程;
  • 启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长;

在这样的情况下,Linux 的各个发行版也尝试过很多其他的系统和服务管理器,不过在 2015 年以后,Linux 的各个发行版都逐渐采用了 systemd

为什么使用 systemd

systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案

systemctl 和 systemd 的关系

systemd 的架构

systemd 架构图

从上图可以直观地看出,systemctl 是 systemd 的众多工具之一,而且是主要工具。

systemd 的各种工具

  • systemd-analyze。用于查看启动耗时;
  • hostnamectl。用于查看当前主机信息;
  • localectl。用于查看本地化设置;
  • timedatectl。用于查看当前时区设置;
  • loginctl。用于查看当前登陆的用户;

Unit

定义

在 systemd 中,大多数操作的目标是 unit,它们是 systemd 知道如何管理的资源。

类型

unit 共有 12 种类型。详见阮一峰的文章

常用命令

# 列出所有 unit
$ systemctl list-units

# 查看系统状态和单个 unit 的状态
$ systemctl status

# 显示某个 unit 是否正在运行
$ systemctl is-active application.service

# 显示某个 unit 是否处于启动失败状态
$ systemctl is-failed application.service

# 显示某个 unit 服务是否建立了启动链接
$ systemctl is-enabled application.service

# 立即启动一个服务
$ sudo systemctl start apache.service

# 立即停止一个服务
$ sudo systemctl stop apache.service

# 重启一个服务
$ sudo systemctl restart apache.service

# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service

# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service

# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload

# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service

# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service

# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500

依赖关系

# 列出所有依赖
$ systemctl list-dependencies nginx.service

配置文件

每一个 unit 都有一个配置文件,告诉 systemd 怎么启动这个 unit 。
systemd 默认从目录 /etc/systemd/system/ 读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录 /usr/lib/systemd/system/ ,真正的配置文件存放在那个目录。
systemctl enable 命令用于在上面两个目录之间,建立符号链接关系。

$ sudo systemctl enable clamd@scan.service
# 等同于
$ sudo ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-user.target.wants/clamd@scan.service'

配置文件的后缀名,就是该 unit 的种类,比如 sshd.socket。如果省略,systemd 默认后缀名为 .service,所以 sshd 会被理解成sshd.service。

配置文件的格式

配置文件就是普通的文本文件,可以用文本编辑器打开。systemctl cat 命令可以查看配置文件的内容。

$ systemctl cat nginx.service

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容