Skip to content

Systemd

Systemd 概述

Systemd 简介

Systemd 是一个系统和服务管理器,用于 Linux 操作系统。它旨在提供一种统一且高性能的方式来管理服务和系统的其他方面。以下是一些 Systemd 的关键组件和特性:

  • 初始化系统:Systemd 作为一个初始化系统,取代了传统的 SysV 或 Upstart 初始化系统。它负责启动和关闭系统,以及在正常运行期间管理进程。
  • 服务管理:Systemd 使用称为“单元”的概念来管理服务,这些服务可以通过诸如 systemctl 这样的命令进行启用、禁用、启动、停止和查询。
  • 依赖性和并行化:与传统 init 脚本不同,Systemd 可以并行启动服务,利用多核 CPU 的优势,并更高效地处理服务之间的依赖关系。
  • 日志记录:Systemd 包含了一个日志记录系统,可以记录程序和服务的消息。这些日志以二进制格式存储在磁盘上,可以通过 journalctl 命令访问,并提供了高级过滤选项。
  • 套接字激活:服务可以根据监听套接字被激活,而不是先启动然后等待连接。这可以减少资源使用。
  • 定时器单元:服务可以配置为在特定时间或间隔运行,类似于 cron 作业,但具有额外的功能和灵活性。
  • 挂载和交换管理:Systemd 可以管理文件系统的挂载点和交换分区,确保它们在需要时可用。
  • 网络配置:通过与 NetworkManager 或其他工具的集成,Systemd 可以处理网络配置并启动网络接口。
  • 用户会话:Systemd 还可以管理用户的本地和远程会话,允许每个用户的服务和资源控制。
  • 资源控制:Systemd 可以限制服务使用的资源(如 CPU、内存、I/O),帮助防止失控的进程消耗过多的系统资源。

systemd 架构

Systemd 命令

Systemd 应用

使用 systemd 来管理 frps 服务

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。

/etc/systemd/system 下创建 frps.service 用于配置 frps 服务

bash
sudo vim /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

bash
sudo systemctl start   frps # 启动 frp
sudo systemctl stop    frps # 停止 frp
sudo systemctl restart frps # 重启 frp
sudo systemctl status  frps # 查看 frp 状态

设置 frps 开机自启动

bash
sudo systemctl enable frps

通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。

参考资料