Wake Me Up When September Ends.

A wanderer capable of grasping the beauty of the grass, with a heart full of ancient charm, and a fondness for playful wit. Those who understand my words are knowledgeable individuals; those who decipher my code truly comprehend the essence. I am a wandering code swordsman, carrying my skills and riding freely through the digital world.

🔰systemd服务单元文件讲解

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

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

systemd服务单元文件

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

1
2
3
4
5
6
7
8
9
10
11
[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/ 目录下。使用以下命令启用这个服务并启动它:

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

参考

阮一峰:Systemd 入门教程