使用 Systemd 在启动时启动 Linux 服务

热门:
升级您的服务器配置! 申请 AVA 并使用 立减 15%
使用优惠码:

介绍

Systemd 是一个强大的 init system,被大多数现代 Linux distributions 用于管理 system 和 service processes。它的一个关键特性是能够在 boot 时自动启动 services。本文将引导您完成使用 Systemd 配置 service 在 boot 时启动的过程,确保您的关键应用程序在 system 重启时可靠运行。

了解 Systemd Services

Systemd 使用 unit files 来定义和管理 services。这些 unit files 存储在:

  • System-wide services:
    /etc/systemd/system/

    /lib/systemd/system/
  • User-specific services:
    ~/.config/systemd/user/

一个 service unit file 通常具有

.service

扩展名,并包含告诉 Systemd 如何管理该 service 的配置指令。

创建 Systemd Service File

要配置 service 在 boot 时启动,您需要创建一个 Systemd service file。以下是创建自定义 service 的示例。

1. 创建 Service File

运行以下命令以在文本编辑器中打开一个新的 service file:

sudo nano /etc/systemd/system/myservice.service

2. 定义 Service 配置

添加以下内容,并根据您的应用程序进行修改:

[Unit] Description=My Custom Service After=network.target [Service] ExecStart=/usr/bin/myapp Restart=always User=myuser Group=mygroup WorkingDirectory=/home/myuser/ [Install] WantedBy=multi-user.target

说明:

  • After=network.target

    :确保 service 在 network 可用后启动。

  • ExecStart=/usr/bin/myapp

    :定义启动 service 的命令。

  • Restart=always

    :确保 service 在失败时重新启动。

  • User=myuser

    Group=mygroup

    :以特定用户和组运行该 service。

  • WantedBy=multi-user.target

    :确保 service 在 multi-user mode 下启动(大多数 servers 的默认 runlevel)。

3. 重新加载 Systemd 并启用 Service

创建 service file 后,重新加载 Systemd 以识别新 service:

sudo systemctl daemon-reload

启用该 service 以在 boot 时启动:

sudo systemctl enable myservice.service

4. 启动并验证 Service

手动启动该 service:

sudo systemctl start myservice.service

检查 service 状态:

sudo systemctl status myservice.service

如果一切配置正确,您应该会看到表明该 service 正在运行的输出。

管理 Service

以下是一些用于管理您的 Systemd service 的有用命令:

  • 重启该 service:
    sudo systemctl restart myservice.service
  • 停止该 service:
    sudo systemctl stop myservice.service
  • 禁止该 service 在 boot 时启动:
    sudo systemctl disable myservice.service
  • 查看与该 service 相关的日志:
    journalctl -u myservice.service --no-pager

结论

使用 Systemd 在 boot 时启动 services 是一种简单而有效的方法,可确保关键应用程序在 system 重启后继续运行。通过正确配置 Systemd service file、在 boot 时启用它,并使用

systemctl

对其进行管理,您可以提高 Linux 环境的可靠性和自动化程度。