Linux systemd

2018-04-21|Categories: Linux|

Systemd是什么

Systemd官网的介绍如下:

systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system.

systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, maintains mount and automount points, and implements an elaborate transactional dependency-based service control logic.

systemd supports SysV and LSB init scripts and works as a replacement for sysvinit.

Other parts include a logging daemon, utilities to control basic system configuration like the hostname, date, locale, maintain a list of logged-in users and running containers and virtual machines, system accounts, runtime directories and settings, and daemons to manage simple network configuration, network time synchronization, log forwarding, and name resolution.

简而言之,systemd是Linux系统的第一个进程(PID 1),将启动所有的系统守护进程(daemon)。systemd = system + daemon,表示systemd是整个系统的守护进程。

为什么要使用systemd

systemd出现之前,Linux的PID 1一直是System V风格的init,但init有明显的缺点:

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

Systemd就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。Systemd的优点是功能强大,使用方便,缺点是体系庞大,非常复杂:

事实上,现在还有很多人反对使用systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反「Keep It Simple and Stupid」的Unix哲学。一些激进的反对者甚至收集比特币雇佣杀手去「解决」systemd的开发者Lennart Poettering!

如何使用systemd

Systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

systemctl

systemctl是systemd的主命令,用于管理系统。

# 重启系统
systemctl reboot

# 关闭系统,切断电源
systemctl poweroff
# 系统启动时进入文本模式
systemctl set-default multi-user.target

# 系统启动时进入图形模式
systemctl set-default graphical.target

# 查看启动模式
systemctl get-default
# 查看某个Unit文件的内容
systemctl cat httpd.service

systemd-analyze

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

# 查看启动耗时
systemd-analyze                                                                                       

# 查看每个服务的启动耗时
systemd-analyze blame

# 显示瀑布状的启动过程流
systemd-analyze critical-chain

# 显示指定服务的启动流
systemd-analyze critical-chain atd.service

相关资料

Leave A Comment