diff --git a/_posts/Linux/systemd.md b/_posts/Linux/systemd.md new file mode 100644 index 0000000..b542678 --- /dev/null +++ b/_posts/Linux/systemd.md @@ -0,0 +1,81 @@ +--- +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 的自动启动。