blog/_posts/Linux/systemd.md
2024-03-19 10:30:55 +08:00

3.3 KiB
Raw Blame History

title date tags
🔰systemd服务单元文件讲解 2024-03-16 Linux

systemd服务单元文件主要放在/usr/lib/systemd/system/etc/systemd/system目录下,文件一般以 .service 为后缀。找到配置文件以后,使用文本编辑器打开即可。

也可以systemctl cat命令可以用来查看配置文件。

systemd服务单元文件

systemd服务单元文件就是服务岁系统自启动的一种脚本。以下是一个示例:

[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 的自动启动。