使用SYSTEMCTL RESTART命令重新启动服务

2024年 3月 20日 24.0k 0

systemd是一个在Linux上广泛使用的系统服务管理器。要管理systemmd服务,使用systemctl命令行实用程序。此工具还用于重新启动任何systemd服务。

Linux上的服务通过它们的配置文件进行管理。如果对服务的配置文件进行了修改,则必须启动服务的重新启动以应用修改。重新启动服务后,systemd重新评估配置文件并应用修改。

在本指南中,我将介绍如何使用systemctl在Linux中重新启动服务。

注意:本指南包括在Ubuntu 22.04上执行的命令和指令。该命令在system d服务管理器附带的发行版上可以正常工作。

systemctl restart命令

重新启动命令实质上是停止服务,然后再次启动它。如果服务或设备未运行,重新启动命令将启动其操作。

重新启动命令不会删除链接到该服务的进程。以文件描述符为例,它是操作系统分配给服务打开的文件的非负标识符。如果重新启动服务,则在重新启动过程中,链接到该服务的文件描述符将保留在那里。

如果您想清除所有链接到服务的进程,那么您需要显式地停止服务并重新启动它。

如何重新启动服务

在Linux上,您可以使用带有restart选项的sudo systemctl命令行工具并指定其名称来重新启动服务。一般语法如下:

sudo systemctl restart [service—name]

您需要sudo权限才能重新启动服务。

例如,让我们重新启动ssh服务。

Sudo system ctl重启ssh.service

若要重新启动多个服务,请在restart命令后面添加空格。

sudo systemctl restart ssh. service smbd. service

其他重启命令如下表所示:

尝试-重新启动 它停止或启动指定的一个或多个服务,如果服务没有运行,它不会启动它
重新加载或重新启动 重新加载受支持的一个或多个服务,如果不支持该服务,则重新启动并激活该服务
尝试重新加载或尝试重新启动 重新加载受支持的一个或多个服务,如果该服务不受支持,则在不激活它的情况下重新启动它

在上面的命令中,. service扩展名是可选的。

如何自动重启服务

在Linux上,如果服务失败,则默认情况下,系统d会重新启动它。尽管如此,在许多情况下,可能需要修改服务重新启动的方式。例如,在定制服务的调试过程中可能需要手动操作。

systemd单元文件或服务文件位于/etc/systemd/system或/lib/systemd/system上,主要取决于服务的创建方式。要列出Linux上的单元文件,请使用以下命令:

ls/lib/systemd/system

您可以看到不同服务的配置文件。让我们使用nano编辑器打开ssh. service文件。

sudo nano/lib/systemd/system/ssh. service

您可以在这里修改重新启动设置。默认情况下,它被设置为on—failure。以下列出了重新启动服务的其他选项:

  • 没有
  • 总是
  • 成功
  • 接通故障
  • 亮起-异常
  • 中止时
  • 接通监视器

设备服务文件中的另一个选项是RestartSec,用于指定服务将重新启动的秒数。

[服务]

重新启动=始终

重新启动安全=5

这些说明意味着服务将在启动时重新启动,如果中断,将在5秒后重新启动。

修改设置后,执行以下命令以应用更改。

Sudo系统ctl重新加载守护进程

其他需要考虑的重要设置包括StartLimitIntervalSec和StartLimitBurst。这些选项可用于设置重新启动服务的最长时间和最长重试次数。

【单位】

开始限制间隔秒= 300

StartLimitBurst = 4

上述指令表明,如果服务在300秒后没有启动,系统将自动停止尝试重新启动服务,并重试4次。

要验证服务是否在5秒后重新启动,请使用服务的PID和kill命令来终止服务。

SUDO KILL-9[PID]

5秒后,服务将重新启动;使用Journal alctl命令检查ssh.service的状态。

Jouralctl-u ssh.service

如何在从属服务重新启动时重新启动服务

在Linux上,许多服务是相互依赖的,同样,当一个依赖的服务重新启动时,它们也需要重新启动。

在单元服务文件中有三个不同的选项来重新启动服务,并重新启动依赖服务。

  • 部分
  • BindsTo
  • 要求

所有这些选项执行相同的任务。

让我们以ssh. service为例,它依赖于apparmor. service;一个Linux安全模块提供必要的访问。要列出Linux中服务的依赖项,请使用systemctl和list—dependencies命令和服务名称。

systemctl列表依赖关系ssh. service

因此,如果您想在重新启动apparmor. service时重新启动ssh. service,则需要在apparmor. service文件的[Unit]部分中包含PartOf、BindsTo或Requires选项以及服务名称。

打开apparmor. service文件。

Sudo Nano/lib/system d/system/apapmor.service

在[单位]部分添加以下行。

PartOf = ssh. service

保存文件并执行daemon—reload命令。

sudo systemctl守护进程

现在,重新启动ssh.service,然后检查apparmor. service日志。

您将注意到apparmor.服务在ssh.服务重新启动的同时重新启动。

结论

要在Linux上重新启动一个或多个服务,systemctl命令与restart选项一起使用。systemctl是用于管理systemd服务的命令行实用程序。重新启动选项启动一个服务,然后停止它,激活一个非活动的服务。但是,您可以使用try—restart选项在不激活服务的情况下重新启动服务。

相关文章

猎豹浏览器怎么更改下载路径
Apache的URL缩短功能如何实现
Apache的点击劫持保护如何设置
Apache的HSTS功能是什么如何启用
Apache的X-Frame-Options如何配置以防止点击劫持
Apache的Content Security Policy如何设置

发布评论