SystemCtl命令管理SystemD服务
SystemD是一个适用于Ubuntu/CentOS等任何Linux发行版的服务管理器。
它是Init系统的替代品,可以管理系统启动和服务。
它启动并监督整个系统。
在本教程中,将介绍如何使用SystemCtl命令来管理Linux中的SystemD服务。
PID 1由"SystemD"占用,也可以从Pstree命令看:
# pstree
让我们探索哪个系统能够以及我们对Sysvinit的新替代有哪些可能性。
1)列表单位
systemctl命令没有任何选项列出了所有正在运行的单位。
列表单元交换机也是相同的。
# systemctl
或者
# systemctl list-units
列出失败的单位
可以使用 - 删除的交换机列出故障单元。
# systemctl --failed
我们将看到在本文的许多地方使用systemctl命令。
2)列出活动服务
现在让我们看看如何使用SystemD管理服务。
可以使用以下命令列出所有活动服务:
# systemctl list-units -t service
3)服务状态
在Sysvinit中,我们可以使用服务命令来管理服务,但使用systemd,systemctl命令用于管理服务。
要查看是否运行服务是否运行,我们可以使用这样的systemctl命令:
# systemctl status dnsmasq
4)开始服务
要启动服务,我们再次使用systemctl命令为:
# systemctl start dnsmasq
与service命令相反,此命令不给出任何输出。
但当然,我们可以再次检查服务的状态,以确认其开始成功:
5)停止服务
现在,我们才能达到智能,并且已经知道使用systemd停止服务的命令:
# systemctl stop dnsmasq
6)重新启动服务
同样,使用"SystemCtl Restart"重新启动服务:
# systemctl restart dnsmasq
7)重新加载服务
如果我们需要重新载入服务的配置(例如ssh),而无需重新启动它,我们可以使用命令:
# systemctl reload sshd
虽然上面的所有语法都在工作,但官方文档表明这些命令用以下语法运行:
# systemctl status dnsmasq.service
8)在启动时检查服务状态
chkconfig命令用于在启动时管理服务。
相同的命令SystemD与SystemD一起使用以在引导时管理服务。
要检查启动时是否启用了服务,请执行以下操作:
# systemctl is-enabled dnsmasq.service
9)在启动时启用服务
SystemCtl命令可以用这样用来在引导时启用服务(这对应于Sysvinit'Chkconfig On')
# systemctl enable dnsmasq.service
10)在启动时禁用服务
同样,使用systemctl命令启动时可以禁用服务:
# systemctl disable dnsmasq.service
注意:sudo systemctl启用nginx --now
将在单个命令中立即启用和启动服务(此处nginx)。
11)管理远程系统
通常,所有上述SystemCtl命令都可用于管理具有systemctl命令本身的远程主机。
这将使用SSH与远程主机进行通信。
我们需要做的就是将用户和主机添加到SystemCtl命令,如下所示:
# systemctl status sshd -H [email protected]
12)管理目标
SystemD具有对Sysvinit中的润滑率具有类似目的的目标的概念。
sysvinit中的润滑尺大多数是数字(0,1,2,......)。
以下是Sysvinit中的润滑尺,他们的Systemd对应物:
0 runlevel0.target, poweroff.target 1, s, single runlevel1.target, rescue.target 2, 4 runlevel2.target, runlevel4.target, multi-user.target 3 runlevel3.target, multi-user.target 5 runlevel5.target, graphical.target 6 runlevel6.target, reboot.target emergency emergency.target
改变当前目标
目前的目标(runlevel)可以使用命令更改:
# systemctl isolate graphical.target
列出当前目标
如果我们想查看我们所在的目标,我们需要列出所有相应的单位。
它可能在家里用这种新的方式感到宾至如归,但它的系统方式工作。
# systemctl list-units --type=target
我们可以在此处查看"Graphical.target"。
这就是我们改变了目标的目标。
现在让我们再次将Runlevel更改为Multi -User.target,然后分析此输出:
# systemctl isolate multi-user.target # systemctl list-units --type=target
列出默认目标
要列出默认目标,我们使用这样的systemctl命令:
# systemctl get-default
更改默认目标
可以使用systemctl设置默认目标,使用systemctl设置:
# systemctl set-default graphical.target
13)登录系统
Systemd具有自己的日志记录系统,称为JournalD。
它从sysvinit替换syslog守护程序。
命令journalctl用于读取日志。
# journalctl
启动消息
要查看所有引导消息,请运行命令"journalctl -b"。
# journalctl -b
遵循日志
以下命令实时遵循系统日志(类似于TAIL -F)。
# journalctl -f
服务特定日志
要检查特定于特定服务或者可执行文件的日志,请使用如此:
# journalctl /usr/sbin/dnsmasq
14)电源管理
systemctl命令可用于将系统放下,或者重新启动或者休眠。
要强制,重新启动,暂停和休眠,分别使用以下命令:
# systemctl poweroff # systemctl reboot # systemctl suspend # systemctl reboot
15)系统更快启动
Sysvinit一次串行启动流程。
Systemd并行启动服务,仅启动实际需要的服务,从而显着减少启动时间。
我们可以使用以下命令获取引导过程持续时间:
# systemd-analyze
命令Systemd-Analyze时间也显示了相同的信息。
# systemd-analyze time
如果要打印所有运行单元的列表,则SystemD-Analyze命令的归咎选项可以为我们提供,按照初始化所需的时间订购。
# systemd-analyze blame
上面的屏幕仅显示少量流程,我们可以使用箭头滚动列表,就像在更少的寻呼机中一样。
16)Systemd HostNamectl命令
系统带出了与操作系统交互的全新方法。
系统是如此充满了功能。
例如,我们可以获取有关Linux机器的主机名和其他有用功能,可以使用hostnamectl命令
# hostnamectl