Linux Systemd 与 Init 速查表

前言

Systemd 是新一代的 init 框架,最早从 Fedora 开始应用,如今已被 RedHat、Suse 和 Centos 等众多发行版广泛采纳。说实话,我们大多数人过去一直习惯使用传统的 SysV init 脚本,它们通常位于 /etc/rc.d/init.d/ 目录下。这些脚本通过调用守护进程二进制文件,进而 fork 出后台进程。尽管 Shell 脚本非常灵活,但要实现诸如进程管理及并行化执行排序等任务却相当困难。随着 systemd 引入新一代的守护进程管理方式,我们在运行时管理和控制它们变得更加容易,同时也优化了执行性能。
systemctl 命令是 systemd 团队做出的一个非常棒的改进。它不仅能显示更详细的错误信息,还能展示服务在运行时的错误,包括启动错误。systemd 还引入了一个名为 cgroups(控制组)的新概念,它本质上是将进程按层级组织起来。在旧的 init 系统下,想要弄清楚哪个进程在做什么、归属于谁变得愈发困难。而在 systemd 中,当进程生成子进程时,这些子进程会自动成为父进程 cgroup 的成员,从而避免了归属权上的混淆。

服务相关命令

说明

SysVinit

Systemd —

— 启动服务

service dummy start

systemctl start dummy.service 停止服务

service dummy stop

systemctl stop dummy.service 重启服务

service dummy restart

systemctl restart dummy.service 重载服务

service dummy reload

systemctl reload dummy.service 服务状态

service dummy status

systemctl status dummy.service 如果服务正在运行则重启

service dummy condrestart

systemctl condrestart dummy.service 开机自启

chkconfig dummy on

systemctl enable dummy.service 禁止开机自启

chkconfig dummy off

systemctl disable dummy.service 检查服务是否已设为开机自启

chkconfig dummy

systemctl is-enabled dummy.service 创建新服务文件或修改配置

chkconfig dummy –add

systemctl daemon-reload

运行级别命令

说明

SysVinit

Systemd —

— 系统停止

0

runlevel0.target, poweroff.target 单用户模式

1, s, single

runlevel1.target, rescue.target 多用户模式

2

runlevel2.target, multi-user.target 带网络的多用户模式

3

runlevel3.target, multi-user.target 实验性/自定义模式

4

runlevel4.target, multi-user.target 多用户(带网络、图形界面)

5

runlevel5.target, graphical.target 重启

6

runlevel6.target, reboot.target 紧急 Shell

emergency

emergency.target 切换到多用户运行级别/目标

telinit 3

systemctl isolate multi-user.target
(或 systemctl isolate runlevel3.target) 设置下次启动进入多用户模式

sed s/^id:.*:initdefault:/ id:3:initdefault:/

ln -sf /lib/systemd/system/multiuser.target /etc/systemd/system/default.target 检查当前运行级别

runlevel

systemctl get-default 更改默认运行级别

sed s/^id:.*:initdefault:/ id:3:initdefault:/

systemctl set-default multi-user.target

Systemd 新增命令

说明

Systemd

在远程主机上执行 systemd 命令

systemctl dummy.service start -H user@host

检查启动时间

systemd-analyze 或 systemd-analyze time

终止某服务的所有相关进程

systemctl kill dummy

获取今天的事件日志

journalctl –since=today

主机名及其他主机相关信息

hostnamectl

系统日期时间、时区及其他信息

timedatectl

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/29023.html
点赞
0.00 平均评分 (0% 分数) - 0