使用 systemd 管理 Linux 服务器的介绍

Systemd 是几个常见的 Linux 发行版使用的 init 系统,自 2015 年以来已经流行起来。Linux init 系统是在初始引导过程之后在系统上启动的第一个进程或守护进程,它管理服务、守护进程和其他系统进程。 Systemd 由包含其控制的守护进程的初始化指令的单元文件组成。 虽然系统的许多部分都可以使用 systemd 进行管理,但本文将重点介绍管理服务。

如何使用 systemd 管理 Linux 服务器

要使用 systemd 控制服务,使用 systemctl 命令。 让我们回顾一下如何启动、停止、重新启动、启用和禁用以及检查服务的状态。 我们将使用 Apache 服务,在基于 RedHat 的 Linux 发行版上称为 httpd example.

注意:除非运行其中某些命令失败,否则它们不会输出任何结果,这是意料之中的。 将记录预期具有输出的命令。

开始

这只会启动一次服务,如果您希望服务在启动时启动,请参阅下面的“启动时启用”命令。

systemctl start httpd

停止

这只会停止一次服务,如果您希望该服务在启动时不重新启动,请参阅下面的“启动时禁用”命令。

systemctl stop httpd

重新开始

完全停止并启动服务。

systemctl restart httpd

重新加载

重新加载服务的配置而不导致服务重新启动。 并非所有服务都接受重新加载命令。

systemctl reload httpd

启动时启用

这会将指定的服务设置为在每次系统启动时启动。

systemctl enable httpd

示例输出:

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /etc/systemd/system/httpd.service.

启动时禁用

这会将指定的服务设置为每次系统启动时都不启动。

systemctl disable httpd

示例输出:

Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

检查状态

systemctl status httpd

示例输出:

● httpd.service - Apache web server managed by cPanel EasyApache
   Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2018-01-26 13:32:15 EST; 20h ago
 Main PID: 2988 (httpd)
   CGroup: /system.slice/httpd.service
           ├─ 2988 /usr/sbin/httpd -k start
           ├─30142 /usr/sbin/httpd -k start
           ├─30143 /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/bin/leech...
           ├─30144 /usr/sbin/httpd -k start
           ├─30145 /usr/sbin/httpd -k start
           ├─30219 /usr/sbin/httpd -k start
           ├─30220 /usr/sbin/httpd -k start
           └─30221 /usr/sbin/httpd -k start

Jan 26 13:32:15 test.example.com systemd[1]: Starting Apache web server managed ....
Jan 26 13:32:15 test.example.com systemd[1]: PID file /run/apache2/httpd.pid not....
Jan 26 13:32:15 test.example.com systemd[1]: Started Apache web server managed b....
Hint: Some lines were ellipsized, use -l to show in full.

此输出的要点之一是第三行,在本例中显示 Active: active (running),这表明该服务当前已启动并处于活动状态。

更多信息

有关使用 systemctl 和 systemd 其他部分的更多信息可以在几个 Linux 手册页中找到,主要是 systemctl(1)。

这是一个简短的 example 查看手册页的命令,以及该页面的前几行。

man 1 systemctl
SYSTEMCTL(1)                  systemctl                 SYSTEMCTL(1)

NAME
       systemctl - Control the systemd system and service manager

SYNOPSIS
       systemctl [OPTIONS...] COMMAND [NAME...]

DESCRIPTION
       systemctl may be used to introspect and control the state of
       the "systemd" system and service manager. Please refer to
       systemd(1) for an introduction into the basic concepts and
       functionality this tool manages.