linux 的systemd服务详解

目录

1. systemd 基础概念

2. 常见的 systemd 命令

3. Service unit 文件格式

3.1、[Unit] 部分

3.2、[Service] 部分

3.3、[Install] 部分

4. systemd 依赖管理

4.1. systemd 单元类型的依赖关系

4.2. Before 和 After:控制启动顺序

4.3. Requires 和 Wants:服务依赖性

4.4. BindsTo 和 PartOf:紧密的依赖关系

4.5. Conflicts:服务冲突

4.6. Requisite:强制依赖

4.7. 依赖关系的级别

4.8. 依赖关系检查

4.9. 组合多个依赖

5. 日志管理

6. 其他常用命令

总结


systemd 是一种现代化的初始化系统和服务管理器,广泛用于 Linux 操作系统中,尤其是在大多数基于 Debian 和 Red Hat 系统的发行版(如 Ubuntu、CentOS、Fedora)中。它是当前 Linux 系统的默认服务管理工具,提供了并行启动服务、依赖管理、进程监控等许多先进功能。下面是对 systemd 服务的详细解读。

1. systemd 基础概念

  • unitsystemd 中的基本管理单元。每个 unit 描述了一个服务、设备、挂载点、套接字或其他系统资源。常见的 unit 类型有:

    • service:定义服务,如 Web 服务器。
    • socket:管理网络套接字。
    • target:用于将多个 unit 组织在一起形成系统启动目标。
    • mount:挂载文件系统。
    • timer:用于定时任务,类似于 cron。
  • service unit 文件:每个服务都有一个对应的 unit 文件,通常存放在 /etc/systemd/system//lib/systemd/system/ 目录下,文件扩展名通常是 .service

2. 常见的 systemd 命令

  • 启动服务

    sudo systemctl start <service_name>

    启动指定的服务。

  • 停止服务

    sudo systemctl stop <service_name>

    停止指定的服务。

  • 重启服务

    sudo systemctl restart <service_name>
  • 查看服务状态

    sudo systemctl status <service_name>

    查看服务的当前状态、是否运行、日志等。

  • 启用服务开机启动

    sudo systemctl enable <service_name>

    将服务设置为开机启动。

  • 禁用服务开机启动

    sudo systemctl disable <service_name>

    禁用服务的开机启动。

  • 查看所有服务的状态

    sudo systemctl list-units --type=service

3. Service unit 文件格式

systemd 使用配置文件(unit 文件)来管理服务。下面是一个简单的 .service 文件示例:

[Unit]
Description=JWHB Service
After=network.target

[Service]
ExecStart=/usr/local/bin/jwhb
Restart=on-failure
User=nobody
Group=nogroup
WorkingDirectory=/usr/local/bin
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3.1、[Unit] 部分

systemd 单元文件的 [Unit] 部分,你可以定义服务的基本描述、启动顺序和依赖关系。这个部分的配置项帮助定义服务之间的关系和服务的启动时机。

  • Description:服务的简短描述,便于用户识别服务的功能。

  • After:指定服务启动的顺序。表示当前服务必须在指定服务之后启动。可以用于确保服务按正确顺序启动。例如,确保 Web 服务在数据库服务之后启动:

  • Before:指定当前服务必须在指定服务之前启动。这可以用于强制服务按照特定顺序启动。例如,确保数据库服务在 Web 服务之前启动:

  • Requires:指定当前服务依赖的其他服务。如果依赖的服务失败,当前服务也会失败并停止。

  • Wants:指定当前服务期望启动的其他服务,即使这些服务失败也不会影响当前服务的启动。

  • Conflicts:定义当前服务和指定服务之间的冲突关系。如果一个服务启动,另一个服务将被停止。

  • Before/After:你可以根据需要组合 BeforeAfter 以建立服务间的启动顺序。例如,After=network.target 表示该服务会在网络服务启动后才会启动。

3.2、[Service] 部分

[Service] 部分用于定义如何启动和停止服务。它包含了服务的执行命令、重启策略、用户和工作目录等信息。

  • Ex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值