--- title: 🔰systemd服务单元文件讲解 date: 2024-03-16 tags: Linux --- systemd服务单元文件主要放在`/usr/lib/systemd/system`或`/etc/systemd/system`目录下,文件一般以 `.service` 为后缀。找到配置文件以后,使用文本编辑器打开即可。 也可以`systemctl cat`命令可以用来查看配置文件。 ## systemd服务单元文件 `systemd`服务单元文件就是服务岁系统自启动的一种脚本。以下是一个示例: ```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 ``` 将这个服务单元文件保存在 /etc/systemd/system/ 目录下。使用以下命令启用这个服务并启动它: sudo systemctl enable my-service.service sudo systemctl start my-service.service ## 常见配置讲解 ### 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 命令用于查看系统状态和单个 Unit 的状态。 3. systemctl list-units命令可以查看当前系统的所有 Unit。 4. systemctl list-unit-files命令可以查看当前系统的所有 Unit 文件。 5. systemctl restart 命令用于重启单个 Unit。 6. systemctl start 命令用于启动单个 Unit。 7. systemctl stop 命令用于停止单个 Unit。 8. systemctl enable 命令用于开启单个 Unit 的自动启动。 9. systemctl disable 命令用于禁用单个 Unit 的自动启动。