2024-03-19 02:30:55 +00:00
|
|
|
|
---
|
|
|
|
|
title: 🔰systemd服务单元文件讲解
|
|
|
|
|
date: 2024-03-16
|
|
|
|
|
tags: Linux
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
systemd服务单元文件主要放在`/usr/lib/systemd/system`或`/etc/systemd/system`目录下,文件一般以 `.service` 为后缀。找到配置文件以后,使用文本编辑器打开即可。
|
|
|
|
|
|
|
|
|
|
也可以`systemctl cat`命令可以用来查看配置文件。
|
|
|
|
|
|
|
|
|
|
## systemd服务单元文件
|
|
|
|
|
|
2024-03-19 05:15:18 +00:00
|
|
|
|
`systemd`服务单元文件是服务系统自启动的一种脚本。以下是一个示例:
|
2024-03-19 02:30:55 +00:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
[Unit]
|
|
|
|
|
Description=My Sample Service
|
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
Type=simple
|
|
|
|
|
ExecStart=/usr/bin/php /path/to/your/script.php
|
|
|
|
|
Restart=always
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
|
```
|
2024-03-19 02:38:08 +00:00
|
|
|
|
<!--more-->
|
2024-03-19 02:30:55 +00:00
|
|
|
|
将这个服务单元文件保存在 /etc/systemd/system/ 目录下。使用以下命令启用这个服务并启动它:
|
|
|
|
|
|
2024-03-19 02:36:18 +00:00
|
|
|
|
```sh
|
|
|
|
|
sudo systemctl enable my-service.service # 启用,随机启动
|
|
|
|
|
sudo systemctl start my-service.service # 启动
|
|
|
|
|
```
|
2024-03-19 02:30:55 +00:00
|
|
|
|
|
|
|
|
|
## 常见配置讲解
|
|
|
|
|
|
|
|
|
|
### Unit 配置
|
|
|
|
|
|
|
|
|
|
1. Description:描述服务的简要说明。
|
|
|
|
|
2. Documentation:服务的文档URL。
|
|
|
|
|
3. Requires:指定服务所依赖的其他服务。
|
|
|
|
|
4. After:指定服务的启动顺序,表示在服务之后启动。
|
|
|
|
|
5. Before:指定服务的启动顺序,表示在服务之前启动。
|
|
|
|
|
6. Condition:指定服务的启动条件。
|
|
|
|
|
|
|
|
|
|
### Service 配置
|
|
|
|
|
|
|
|
|
|
1. ExecStart:指定启动服务时执行的命令。
|
|
|
|
|
2. ExecStop:指定停止服务时执行的命令。
|
|
|
|
|
3. Restart:指定服务异常退出时的重启策略。
|
|
|
|
|
- always:表示无论何时服务退出(无论是正常退出还是异常退出),Systemd都会自动尝试重新启动该服务。
|
|
|
|
|
- on-success:仅在服务正常退出时重启。
|
|
|
|
|
- on-failure:仅在服务异常退出时重启。
|
|
|
|
|
- on-abnormal:在服务异常退出时重启。
|
|
|
|
|
- on-abort:在服务收到中止信号时重启。
|
|
|
|
|
4. User:指定服务的用户。
|
|
|
|
|
5. WorkingDirectory:指定服务的工作目录,注意需要使用绝对路径。
|
|
|
|
|
6. Environment:指定服务的环境变量。
|
|
|
|
|
|
|
|
|
|
### Install 配置段
|
|
|
|
|
|
|
|
|
|
WantedBy:用于指定哪些Systemd目标服务会依赖当前服务。Systemd目标服务是一种特殊的服务单元,用于控制系统启动和关闭的过程。可选如下:
|
|
|
|
|
|
|
|
|
|
1. multi-user.target:多用户目标,表示系统处于正常运行状态。
|
|
|
|
|
2. graphical.target:图形界面目标,表示系统启动到图形界面。
|
|
|
|
|
3. rescue.target:紧急恢复目标,用于系统无法启动时进入紧急模式。
|
|
|
|
|
4. halt.target:关机目标,表示关闭系统。
|
|
|
|
|
5. reboot.target:重启目标,表示重启系统。
|
|
|
|
|
|
|
|
|
|
## systemctl命令使用
|
|
|
|
|
|
|
|
|
|
systemctl是Systemd前端管理工具,用于管理Systemd服务和系统状态。
|
|
|
|
|
|
|
|
|
|
1. systemctl list-dependencies 命令列出一个 Unit 的所有依赖。
|
|
|
|
|
2. sysystemctl status <service-name> 命令用于查看系统状态和单个 Unit 的状态。
|
|
|
|
|
3. systemctl list-units命令可以查看当前系统的所有 Unit。
|
|
|
|
|
4. systemctl list-unit-files命令可以查看当前系统的所有 Unit 文件。
|
|
|
|
|
5. systemctl restart <service-name> 命令用于重启单个 Unit。
|
|
|
|
|
6. systemctl start <service-name> 命令用于启动单个 Unit。
|
|
|
|
|
7. systemctl stop <service-name> 命令用于停止单个 Unit。
|
|
|
|
|
8. systemctl enable <service-name> 命令用于开启单个 Unit 的自动启动。
|
|
|
|
|
9. systemctl disable <service-name> 命令用于禁用单个 Unit 的自动启动。
|
2024-03-19 02:33:35 +00:00
|
|
|
|
|
|
|
|
|
## 参考
|
|
|
|
|
|
|
|
|
|
[阮一峰:Systemd 入门教程](https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html)
|