SystemCtl命令管理SystemD服务

时间:2020-03-05 15:28:41  来源:igfitidea点击:

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