Systemctl 是什么? 深入概述

Systemctl 是什么?

systemctl 命令是一个实用程序,负责检查和控制 systemd 系统和服务管理器。 它是系统管理库、实用程序和守护程序的集合,它们充当 System V init 守护程序的后继程序。 事实证明,新的 systemctl 命令在管理服务器服务方面非常有用。 它提供有关特定 systemd 服务的详细信息,以及其他具有服务器范围利用率的服务。

请记住,大多数 systemctl 命令如果成功则不会提供任何输出。 但是,如果 systemctl 命令未能完成任务,您将收到一条错误消息,指出它失败了。

归功于: linux.com

管理服务

什么是服务?

在里面 系统 效用,服务被称为 单元。 单元是系统知道如何操作和管理的任何资源。 一个单位是主要对象 系统 工具知道如何解决。 这些资产在称为单元文件的配置文件中定义。

检查服务状态

使用 systemctl,我们可以检查托管专用服务器上任何 systemd 服务的状态。 status 命令提供有关服务的信息。 它还列出了正在运行的状态,或未运行原因的详细信息,或者服务是否已被无意停止。 如果我们以非 root 用户身份连接到服务器,我们将不得不使用 systemctl 命令运行。

systemctl status servicename.service

可以在没有 .service 扩展名的情况下调用该单元。 由于 systemctl 会查找那些带有 .service 后缀的文件,因此该命令也可以这样使用。

systemctl start servicename

状态输出示例:

[[email protected] ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)    Active: active (running) since Fri 2020-05-08 14:15:54 EDT; 1 weeks 2 days ago      Docs: man:httpd(8)            man:apachectl(8)   Process: 3767 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)  Main PID: 1321 (httpd)    Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"    CGroup: /system.slice/httpd.service            ├─1321 /usr/sbin/httpd -DFOREGROUND            ├─3769 /usr/sbin/httpd -DFOREGROUND

启动或停止服务

systemctl 实用程序还可用于使用服务单元文件启动或停止 systemd 服务,无论是否带有 .service 后缀。

systemctl start servicename.service

当我们想要停止特定服务时,同样的规则适用。

systemctl stop servicename.service

请记住,启动命令只能用于当前未运行的 systemd 服务,而停止命令仅用于正在运行的服务。

重新启动或重新加载服务

可以使用 restart 命令重新启动正在运行的服务,以避免使用以下命令手动停止和启动它。

systemctl restart servicename.service

有时,我们不需要重新启动服务来应用配置更改(如果您进行了更改)。 相反,我们可以使用 reload 命令重新启动服务,该服务实现对正在运行的服务的任何更改。

systemctl reload servicename.serivce

如果我们不确定应该使用这两个命令中的哪一个,还有一个使用 reload-or-restart 命令的附加选项,它将自动为我们确定。

systemctl reload-or-restart servicename.service

启用或禁用服务

当谈到云服务器服务时,我们要求它们中的大多数都保持在线并始终处于活动状态。 由于在服务器上运行所需的服务数量众多,手动启动它们并不是一种方便的方法。 这是启用和禁用命令发挥作用的地方。 使用 enable 命令,我们可以修改 systemd 服务在服务器启动或重启后的响应方式。 它将更新服务设置,然后告诉 systemd 特定服务需要在服务器启动后自动启动。 完成此操作的命令如下。

systemctl enable servicename.service

虽然HTTPD、MySQL、MariaDB等大部分服务已经自动启动,但我们可能需要手动为其中一些启用自动启动。 类似于我们如何设置服务在服务器启动时自动启动,我们也可以使用以下命令禁用服务。

systemctl reload-or-restart servicename.service

disable 命令可防止在启动时自动启动服务,使其处于非活动状态,直到手动启动。

系统状态概述

我们涵盖的所有 systemctl 命令主要用于管理单个服务。 让我们回顾一下 systemctl 必须提供的其他一些命令及其用途。

Linux.hierarchy.cgroups.systemd080420