使用 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=myuserGroup=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 环境的可靠性和自动化程度。